如何获取appleid.apple.com/auth/revoke的client_id与client_secret
iOS端调用Apple账号注销接口的参数获取说明
你调用Apple令牌撤销接口时用到的两个核心参数取值和获取方式如下:
client_id
- 直接填你iOS应用的Bundle ID即可,就是你在Apple Developer后台注册App ID时填写的应用包名,和你集成「通过Apple登录」能力时绑定的App标识完全一致。
client_secret
这个参数不是客户端可直接读取的固定值,是符合Apple签名规则的自签JWT字符串,生成规则如下:
- 先准备好签名所需的基础材料:
- 你Apple开发者账号的Team ID(10位字符,在开发者后台账号会员信息页可查)
- 你为「通过Apple登录」功能创建的密钥对应的Key ID
- 上述密钥对应的
.p8格式私钥文件(创建密钥时从Apple后台下载,仅可下载一次)
- 按照JWT规范组装内容:
- Header部分固定字段:
alg固定填ES256kid填你拿到的Key ID
- Payload部分必填字段:
iss填你的10位Team IDiat填JWT生成时的秒级时间戳exp填JWT过期的秒级时间戳,注意有效期最长不能超过180天aud固定填https://appleid.apple.comsub和client_id取值一致,即你的App Bundle ID
- Header部分固定字段:
- 用下载到的
.p8私钥对拼接好的Header、Payload做ES256签名,拼接成完整JWT字符串就是合法的client_secret。
安全提示:
.p8私钥绝对不能硬编码存放在iOS客户端内,否则会有被恶意提取后滥调用接口的风险,client_secret的生成逻辑必须放在你的自有服务端完成,客户端需要调用撤销接口时,先向自有服务端请求临时有效的client_secret再发起请求。
你提到的curl请求参考格式如下(参数替换为实际值即可):
curl -v POST "https://appleid.apple.com/auth/revoke" \ -H 'content-type: application/x-www-form-urlencoded' \ -d 'client_id=你的App Bundle ID' \ -d 'client_secret=你服务端生成的合法JWT字符串' \ -d 'token=用户Apple登录后获取到的refresh_token' \ -d 'token_type_hint=refresh_token'
内容的提问来源于stack exchange,提问作者kursatsimsek
相关产品推荐
相关产品推荐

