You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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参数的疑问,逐一明确规则:

  1. client_id:是应用的Bundle ID(iOS/macOS应用)或服务端ID(Web应用),需与Sign In with Apple配置的完全一致。
  2. client_secret:不是Apple返回的IdentityToken,而是用开发者账号私钥生成的JWT令牌。生成时需遵循JWT标准,用ES256算法签名,字段包含iss(开发者Team ID)、iat(签发时间)、exp(过期时间,最长6个月)、aud(固定为https://appleid.apple.com)、sub(即client_id)。
  3. grant_type:根据持有的凭证选择:
    • 持有AuthorizationCode时,设为authorization_code
    • 持有refresh_token时,设为refresh_token

三、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,按以下步骤操作:

  1. 生成合法的client_secret:
    使用Apple开发者私钥生成符合要求的JWT令牌,确保签名算法、字段都正确。
  2. 调用Token API获取refresh_token:
    请求参数:
    client_id: 应用Bundle ID
    client_secret: 生成的JWT令牌
    grant_type: authorization_code
    code: 授权流程中获取的AuthorizationCode
    redirect_uri: 与授权流程配置一致(iOS应用可留空)
    
    成功响应后即可拿到refresh_token和access_token。
  3. 调用Revoke API完成解绑:
    请求参数:
    client_id: 应用Bundle ID
    client_secret: 生成的JWT令牌
    token: 选择`access_token`或`refresh_token`(推荐用`refresh_token`,有效期更长)
    token_type_hint: 对应令牌类型(access_token/refresh_token)
    
    调用成功后,即可在Apple设置中看到应用已解绑。

内容的提问来源于stack exchange,提问作者Aadil Dhanani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:50:25