苹果删除帐号原理
调用 Revoke 接口需要 client_id
、client_secret
和 token
client_id
:App 的 BundleIdclient_secret
:JWT(JSON Web Token),苹果开发者中心创建 P8 文件,对该文件使用相关信息进行签名获得token
:调用 Get Token 接口获得
调用 Get Token 接口需要 client_id
、client_secret
、code
和 grant_type
grant_type
:写死为authorization_code
code
:调用苹果登录接口实时获得的 authorizationCode
注意事项:
- 签名、苹果接口调用最好都放服务端,客户端只负责调用
- 调用苹果 API 需要使用
'Content-Type': 'application/x-www-form-urlencoded'
的 Header
如何获取 P8 文件
- 登录开发者中心
- 创建 Key -> 填写名字,如 sfmRelease -> 勾选 Sign In with Apple -> 点击 Configure -> 选择 App -> 下载 P8(注意只能下载一次)
- 记录当前页面的 Key ID 和 Team
如何生成 client_secret
- 将 P8 文件放到 secret_gen.rb 同级目录下
- 调用 secret_gen.rb,得到
client_secret
的值(如果是 dev,需要更新脚本中的key_file
、client_id
、key_id
)
1 | ruby secret_gen.rb |
- 输出的值即为
client_secret
注意该 Key 是与 App Bundle Id 对应,如果需要独立的 debug App,那 debug App 需要重新申请
如何部署
- 将该值复制到 account.js 中
- cd 到 LeanCloud 的云函数目录,执行
lean deploy --prod
部署到云函数即可,无需发版本即可直接生效
有效期问题
这个有效期为半年,到期后调用 Get Token 接口会报错 invalid_client
,导致注销账号失败
解决方法是重新生成 client_secret
,并重新部署