Apple 注销账户 Revoke Token
2022-06-07 本文已影响0人
Jax_YD
相信大家都知道 Apple
规定,所有的APP
在6月30前要支持删除账号
的功能。并且开发者还收到了Apple
的邮件,里面提到了Revoke Token
的事情。
大致意思就是说,如果用Apple ID
登录了APP
,那么在删除账号的同时还需要解除Apple ID
的授权,也就是Apple
说的Revoke Token
。
-
Revoke Tokens
image.png
这个API
其实是需要服务器
去处理的。但是这里有些东西还是需要iOS 开发人员
提供的。
Revoke Tokens
参数解析
i HTTP Body
- 这是在发送请求的时候要注意的
Content-Type: application/x-www-form-urlencoded
form-data
The list of input parameters required for the server to invalidate the token.
Content-Type: application/x-www-form-urlencoded
ii client_id
- 这个参数传
Bundle Identifier
就可以了
iii client_secret
-
这个参数的获取就要复杂一些
-
在
Apple developer
里面按下面的步骤生成一个p8文件
- 1、进入
Certificates, Identifiers & Profiles > Keys
,然后单击Keys
旁边左上角的+
号。 - 2、提供密钥名称并确保勾选
Sign In with Apple
。在这里,我们还必须单击Configure
。在接下来出现的Configure Key
面板中,选择我们之前在Choose a Primary App ID
下使用的App ID
,然后单击保存
。 - 3、单击
Continue
,然后在下一页中验证详细信息并单击Register
。 - 4、下载密钥并将其保存在安全的地方,因为您永远无法再次下载密钥。下载密钥后单击
Done
。
- 1、进入
-
接下来,通过
Ruby
和 刚刚下载的p8
文件,生成我们所需要的client_secret
- 1、设置
Ruby
后运行命令sudo gem install jwt
来设置ruby-jwt
。 - 2、通过文件编辑生成
secret_gen.rb
文件:require "jwt" key_file = "Path to the private key" team_id = "Your Team ID" client_id = "The Service ID of the service you created" key_id = "The Key ID of the private key" validity_period = 180 # In days. Max 180 (6 months) according to Apple docs. private_key = OpenSSL::PKey::EC.new IO.read key_file token = JWT.encode( { iss: team_id, iat: Time.now.to_i, exp: Time.now.to_i + 86400 * validity_period, aud: "https://appleid.apple.com", sub: client_id }, private_key, "ES256", header_fields= { kid: key_id } ) puts token
- 3、运行刚刚生成的
rb
文件:ruby secret_gen.rb
,获取client_secret
。
- 1、设置
iv token
-
这个参数是通过另一个
image.pngAPI
接口去获取的:Generate and Validate Tokens
-
这个接口有些是我们已经获取的,eg:
client_id
&client_secret
;这里只讲一下code
和grant_type
。-
code
:这个是我们获取Apple
授权的时候得到的,每次登录都会有。对应的是:authorizationCode
。 -
grant_type
:这里就选authorization_code
。
-
-
这样请求
Generate and Validate Tokens
之后,就会得到我们所需要的access_token
,也就是token
参数。
v token_type_hint
- 这个就不用多说了,传
access_token
就好了。
对于iOS
开发者来说,这些都不要在APP
端操作,但是authorizationCode
是一定要在认证的时候去获取,并传递给服务器的。
当请求完毕,返回200
之后,我们再次使用Apple ID
去登录我们的APP
的时候,系统会再次让我们授权,这说明Revoke Token
成功。
参考文档:
快速配置 Sign In with Apple
Revoke Tokens
Generate and Validate Tokens