Apple Revoke Auth API调用后无法解绑应用及Token API参数疑问
Apple账号应用解绑与Token API问题解答
一、Revoke API调用后返回200但未解绑的处理
调用Revoke API返回200仅代表请求格式合法,若未成功解绑,必须先通过Token API获取有效的access_token或refresh_token——Revoke API需要传入正确的待撤销令牌,才能完成Apple账号与应用的解绑操作。
二、Token API返回invalid_request错误的解决及参数说明
针对你对Token API参数的疑问,逐一明确规则:
client_id:是应用的Bundle ID(iOS/macOS应用)或服务端ID(Web应用),需与Sign In with Apple配置的完全一致。client_secret:不是Apple返回的IdentityToken,而是用开发者账号私钥生成的JWT令牌。生成时需遵循JWT标准,用ES256算法签名,字段包含iss(开发者Team ID)、iat(签发时间)、exp(过期时间,最长6个月)、aud(固定为https://appleid.apple.com)、sub(即client_id)。grant_type:根据持有的凭证选择:- 持有AuthorizationCode时,设为
authorization_code - 持有refresh_token时,设为
refresh_token
- 持有AuthorizationCode时,设为
三、code与refresh_token的获取方式
code:Sign In with Apple授权流程中,用户完成授权后,Apple返回给客户端的一次性授权码(AuthorizationCode)。refresh_token:首次调用Token API(grant_type设为authorization_code)时,Apple会在响应中返回refresh_token,用于后续刷新令牌。
四、Token API返回令牌与Revoke API的关联
Token API返回的access_token或refresh_token,都可传入Revoke API的token参数使用,同时需指定token_type_hint为对应令牌类型(access_token或refresh_token)。
五、利用已有信息实现Revoke Tokens API的步骤
基于Sign In with Apple流程中获取的UserId、IdentityToken、AuthorizationCode,按以下步骤操作:
- 生成合法的
client_secret:
使用Apple开发者私钥生成符合要求的JWT令牌,确保签名算法、字段都正确。 - 调用Token API获取
refresh_token:
请求参数:
成功响应后即可拿到client_id: 应用Bundle ID client_secret: 生成的JWT令牌 grant_type: authorization_code code: 授权流程中获取的AuthorizationCode redirect_uri: 与授权流程配置一致(iOS应用可留空)refresh_token和access_token。 - 调用Revoke API完成解绑:
请求参数:
调用成功后,即可在Apple设置中看到应用已解绑。client_id: 应用Bundle ID client_secret: 生成的JWT令牌 token: 选择`access_token`或`refresh_token`(推荐用`refresh_token`,有效期更长) token_type_hint: 对应令牌类型(access_token/refresh_token)
内容的提问来源于stack exchange,提问作者Aadil Dhanani
相关产品推荐
相关产品推荐

