diff --git a/Sources/Services/Feishu/FeishuAuthService.swift b/Sources/Services/Feishu/FeishuAuthService.swift index 3e1cb77..80aeb4d 100644 --- a/Sources/Services/Feishu/FeishuAuthService.swift +++ b/Sources/Services/Feishu/FeishuAuthService.swift @@ -51,9 +51,9 @@ final class FeishuAuthService { request.httpBody = try JSONEncoder().encode([ "grant_type": "authorization_code", "code": code, - "redirect_uri": redirectURI, ] as [String: String]) - return try await decodeAPIResponse(request) + // Token endpoints return data at top level, not wrapped in {code, msg, data} + return try await send(request) } func refreshAccessToken(_ refreshToken: String) async throws -> OAuthTokenData { @@ -65,9 +65,10 @@ final class FeishuAuthService { request.setValue("Bearer \(tenantToken)", forHTTPHeaderField: "Authorization") request.httpBody = try JSONEncoder().encode([ "grant_type": "refresh_token", - "refresh_token": refreshToken - ]) - return try await decodeAPIResponse(request) + "refresh_token": refreshToken, + ] as [String: String]) + // Token endpoints return data at top level, not wrapped in {code, msg, data} + return try await send(request) } func fetchCurrentUserName(accessToken: String) async throws -> String { @@ -112,14 +113,6 @@ final class FeishuAuthService { return data.tenantAccessToken } - private func decodeAPIResponse(_ request: URLRequest) async throws -> T { - let response: FeishuAPIResponse = try await send(request) - guard response.code == 0, let data = response.data else { - throw FeishuError.apiError(code: response.code, message: response.msg) - } - return data - } - private func send(_ request: URLRequest) async throws -> T { let (data, response) = try await session.data(for: request) guard let httpResponse = response as? HTTPURLResponse else {