Apple 账户删除功能 | 您所在的位置:网站首页 › 苹果审核新规则注销账户 › Apple 账户删除功能 |
根据苹果的审核新规,要求在6.30之前,提供账户注册的App也要提供相应的账户注销功能,这个相信大家都已经知道了。 需要注意的是,账户删除过程,官方资料要求,通过 Apple ID 登录的账户,注销时需要调用revoke token接口来撤销用户令牌,本文将会详细介绍这一流程。 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 token3、运行刚刚生成的rb文件:ruby secret_gen.rb,获取client_secret 注意,生成的获取client_secret有效期跟上面文件标注的有效期一致,会有过期风险,需要重新生成新的 3. token通过Generate and Validate Tokens接口获取 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刷新,有需要也可以保存下来 传入指定字符串“access_token”即可 access_token刷新机制access_token的有效期为3600s,即一小时,如果过期可以通过刷新机制来获取新的有效的access_token 同样是通过通过Generate and Validate Tokens接口来进行刷新 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 调用接口返回200即为成功, 注意,当token有误或已过期也会返回200,所以如何知道是否撤销成功呢? 再次登录需要授权展示如下界面时即为撤销成功 否则会展示如下 也可以进入手机 设置-》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 实验室设备网 版权所有 |