使用授权码兑换Apple Token时遇400 invalid_client错误求助
解决Sign in with Apple的invalid_client错误
修正client_id的使用
后端调用Apple token接口时,必须使用**Service ID(com.superbun.app.service)**作为client_id,而非移动端的bundleId(com.superbun.app)。Apple身份验证规则中,Service ID是后端服务的身份标识,App ID仅用于移动端客户端授权。重新生成符合规范的client_secret
client_secret的生成必须严格遵循Apple要求,核心要点:- 签名算法强制使用ES256(椭圆曲线签名)
- JWT头部需包含
alg: "ES256"和kid: "你的Apple私钥ID"(从Apple开发者平台下载P8私钥时的对应ID) - JWT Payload字段:
iss: 你的Apple开发者团队IDaud: 固定为https://appleid.apple.comsub: 必须与使用的client_id一致(即Service ID)exp: 设置合理过期时间(建议生成后1小时内有效,最大不超过6个月)
- 必须使用Apple提供的P8格式私钥进行签名,禁止转换为其他格式密钥。
确保授权码有效
- 授权码仅能使用一次,若之前在Postman中重复提交过,需从移动端重新获取新的授权码
- 授权码有效期为5分钟,需在有效期内调用token接口
检查请求参数与格式
- 请求方法必须为
POST,Content-Type设置为application/x-www-form-urlencoded,不能用JSON格式提交 - 参数需严格匹配:
client_id: 你的Service ID(com.superbun.app.service)client_secret: 正确生成的JWT密钥authorization_code: 移动端获取的原始授权码(无多余空格、换行)grant_type: 固定为authorization_code
- 后端调用场景下无需填写
redirect_uri,但如果Service ID中配置了返回URL,需确保与配置一致(非强制,但配置错误可能导致验证失败)
- 请求方法必须为
验证Service ID配置
- 确认Service ID已开启Sign in with Apple功能
- 检查Service ID的返回URL是否正确配置为Azure函数域名+路径(如
https://dev-fapp-supergoodmoldova.azurewebsites.net/callback)
内容的提问来源于stack exchange,提问作者Josan Cristi
相关产品推荐
相关产品推荐

