diff --git a/Sources/Services/Feishu/FeishuAuthService.swift b/Sources/Services/Feishu/FeishuAuthService.swift index 13b3361..f8e6e47 100644 --- a/Sources/Services/Feishu/FeishuAuthService.swift +++ b/Sources/Services/Feishu/FeishuAuthService.swift @@ -102,14 +102,13 @@ final class FeishuAuthService { var request = URLRequest(url: url) request.httpMethod = "POST" request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") - request.httpBody = try JSONEncoder().encode([ - "app_id": appId, - "app_secret": appSecret - ]) + let body: [String: String] = ["app_id": appId, "app_secret": appSecret] + request.httpBody = try JSONEncoder().encode(body) - let response: FeishuAPIResponse = try await send(request) - guard let data = response.data else { - throw FeishuError.apiError(code: response.code, message: response.msg) + // This endpoint returns code/msg/tenant_access_token/expire all at top level + let data: TenantAccessTokenData = try await send(request) + guard data.code == 0 else { + throw FeishuError.apiError(code: data.code, message: data.msg) } cachedTenantToken = data.tenantAccessToken diff --git a/Sources/Services/Feishu/FeishuModels.swift b/Sources/Services/Feishu/FeishuModels.swift index 6d98b5a..f99e18e 100644 --- a/Sources/Services/Feishu/FeishuModels.swift +++ b/Sources/Services/Feishu/FeishuModels.swift @@ -40,10 +40,14 @@ struct OAuthTokenData: Decodable { } struct TenantAccessTokenData: Decodable { + let code: Int + let msg: String let tenantAccessToken: String let expire: Int enum CodingKeys: String, CodingKey { + case code + case msg case tenantAccessToken = "tenant_access_token" case expire }