美文网首页iOSiOS审核上架iOS
Apple 注销账户 Revoke Token

Apple 注销账户 Revoke Token

作者: Jax_YD | 来源:发表于2022-06-07 10:17 被阅读0次

    相信大家都知道 Apple规定,所有的APP在6月30前要支持删除账号的功能。并且开发者还收到了Apple的邮件,里面提到了Revoke Token的事情。
    大致意思就是说,如果用Apple ID登录了APP,那么在删除账号的同时还需要解除Apple ID的授权,也就是Apple说的Revoke Token

    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
    • 接下来,通过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

    iv token

    • 这个参数是通过另一个API接口去获取的:Generate and Validate Tokens

      image.png
    • 这个接口有些是我们已经获取的,eg:client_id & client_secret;这里只讲一下codegrant_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

    相关文章

      网友评论

        本文标题:Apple 注销账户 Revoke Token

        本文链接:https://www.haomeiwen.com/subject/ggtemrtx.html