Apple 账户删除功能 您所在的位置:网站首页 苹果审核新规则注销账户 Apple 账户删除功能

Apple 账户删除功能

2023-11-03 08:19| 来源: 网络整理| 查看: 265

根据苹果的审核新规,要求在6.30之前,提供账户注册的App也要提供相应的账户注销功能,这个相信大家都已经知道了。

截屏2022-06-21 下午3.30.08.png

需要注意的是,账户删除过程,官方资料要求,通过 Apple ID 登录的账户,注销时需要调用revoke token接口来撤销用户令牌,本文将会详细介绍这一流程。

截屏2022-06-21 下午3.30.23.png

调用revoke token接口

截屏2022-06-21 下午4.37.20.png

URL:appleid.apple.com/auth/revoke

可以由App端去调用,也可以交由后端处理,建议后端处理,毕竟涉及到账号的一些认证安全

请求头参数: Content-Type: application/x-www-form-urlencoded

请求参数如下:

1. client_id

项目的Bundle Identifier,不需要带Team ID,例如com.tencent.qq

2. client_secret

一段JSON Web Token(JWT),需要以特定的方式生成

登录Apple开发者中心,生成一个p8文件

1、进入 Certificates, Identifiers & Profiles > Keys,点击 Keys 旁边的 + 号,新建一个key

2、填写名称,勾选 Sign In with Apple,然后点击 Configure,选择项目对应的 App ID,完成configure配置,save返回上级界面继续完成注册

3、注册完成后下载p8文件,注意只能下载一次,记得保存好,需要的话传给后端。

4、记录当前界面的Key ID和Team ID(项目Bundle Identifier的前缀部分),接下来会用到

使用Ruby 生成需要的client_secret

1、运行命令 sudo gem install jwt 来设置 ruby-jwt

2、编辑生成secret_gen.rb文件

require "jwt" key_file = "此处填写p8文件路径" team_id = "此处填写Team ID" client_id = "此处填写Bundle Identifier" key_id = "此处填写Key ID" validity_period = 180 # In days. Max 180 (6 months) according to Apple docs. (过期时间,最大时间180天) 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

注意,生成的获取client_secret有效期跟上面文件标注的有效期一致,会有过期风险,需要重新生成新的 3. token

通过Generate and Validate Tokens接口获取

image.png

URL:appleid.apple.com/auth/token

请求头参数: Content-Type: application/x-www-form-urlencoded

请求体参数如下:

client​_id:项目的Bundle Identifier

client​_secret:上面已经获取到

code:调用Apple登录时获取的authorizationCode

grant_type: 这里可以使用固定字符串 "authorization_code"

refresh​_token和redirect​_uri可以不传

返回结果中提取到access_token即为需要的token

此处返回的refresh_token可用于后续的access_token刷新,有需要也可以保存下来

截屏2022-06-28 09.53.38.png

4. token_type_hint

传入指定字符串“access_token”即可

access_token刷新机制

access_token的有效期为3600s,即一小时,如果过期可以通过刷新机制来获取新的有效的access_token

同样是通过通过Generate and Validate Tokens接口来进行刷新

image.png

URL:appleid.apple.com/auth/token

请求头参数: Content-Type: application/x-www-form-urlencoded

请求体参数如下:

client​_id:项目的Bundle Identifier

client​_secret:上面已经获取到

refresh_token: 上述第三步获取到的refresh_token

grant_type: 这里可以使用固定字符串 "refresh_token"

code和redirect​_uri可以不传

返回结果中提取到access_token即为已刷新完毕的新access_token,可用于注销令牌等操作

新access_token的有效期也是3600s

截屏2022-06-27 15.22.45.png

撤销用户令牌结果

调用接口返回200即为成功,

注意,当token有误或已过期也会返回200,所以如何知道是否撤销成功呢?

再次登录需要授权展示如下界面时即为撤销成功

11958551-1a042f7ccb76351e.png

否则会展示如下

11958551-8c92d1beef533545.png

也可以进入手机 设置-》Apple ID -》 密码与安全性 -》 使用Apple ID的App ,查看Apple ID绑定情况

其它问题

authorizationCode有效时间为5分钟,access_token有效期为1小时,如果用户超出时间再去注销,会导致失效,如何避免?

针对这种情形,目前想到有两种解决方案:

1) 获取到authorizationCode,立即获取access_token,使用刷新机制保证access_token有效(见上文)

2)在注销前调用Apple ID授权,再次获取authorizationCode,即可解决

参考:

帐户删除指导

revoke_tokens

Apple 注销账户 Revoke Token

Sign in with Apple REST API



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有