Apple 注销账户 Revoke Token
2022-06-07 本文已影响0人
Jax_YD
相信大家都知道 Apple规定,所有的APP在6月30前要支持删除账号的功能。并且开发者还收到了Apple的邮件,里面提到了Revoke Token的事情。
大致意思就是说,如果用Apple ID登录了APP,那么在删除账号的同时还需要解除Apple ID的授权,也就是Apple说的Revoke Token。
image.png
-
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
-
这个参数是通过另一个
API接口去获取的:Generate and Validate Tokens
image.png
-
这个接口有些是我们已经获取的,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