苹果删除帐号

苹果删除帐号原理

调用 Revoke 接口需要 client_idclient_secrettoken

  1. client_id:App 的 BundleId
  2. client_secret:JWT(JSON Web Token),苹果开发者中心创建 P8 文件,对该文件使用相关信息进行签名获得
  3. token:调用 Get Token 接口获得

调用 Get Token 接口需要 client_idclient_secretcodegrant_type

  1. grant_type:写死为 authorization_code
  2. code:调用苹果登录接口实时获得的 authorizationCode

注意事项:

  1. 签名、苹果接口调用最好都放服务端,客户端只负责调用
  2. 调用苹果 API 需要使用 'Content-Type': 'application/x-www-form-urlencoded' 的 Header

如何获取 P8 文件

  1. 登录开发者中心
  2. 创建 Key -> 填写名字,如 sfmRelease -> 勾选 Sign In with Apple -> 点击 Configure -> 选择 App -> 下载 P8(注意只能下载一次)
  3. 记录当前页面的 Key ID 和 Team

如何生成 client_secret

  1. 将 P8 文件放到 secret_gen.rb 同级目录下
  2. 调用 secret_gen.rb,得到 client_secret 的值(如果是 dev,需要更新脚本中的 key_fileclient_idkey_id
1
ruby secret_gen.rb
  1. 输出的值即为 client_secret

注意该 Key 是与 App Bundle Id 对应,如果需要独立的 debug App,那 debug App 需要重新申请

如何部署

  1. 将该值复制到 account.js
  2. cd 到 LeanCloud 的云函数目录,执行 lean deploy --prod 部署到云函数即可,无需发版本即可直接生效

有效期问题

这个有效期为半年,到期后调用 Get Token 接口会报错 invalid_client,导致注销账号失败

解决方法是重新生成 client_secret,并重新部署

参考

  1. 苹果删除帐号原理
  2. 如何获取 P8 文件
  3. 如何生成 client_secret
  4. 如何部署
  5. 有效期问题
  6. 参考