Java-苹果开发者账号迁移

原因

        不同的开发者账号主体,苹果登录生成的唯一标识不一样,导致了应用迁移后,通过Sign in with apple 登录,获取到的Identifier值和原来不一致。如果应用原先通过这个作为userid的关联映射,没有做好这个转换的话,将会产生用户数据丢失的严重影响。

        账号A:Identifier_01 -> userid_01

        账号B:Identifier_02 -> userid_02

        由于userid_01 !== userid_02,此时应用迁移后玩家用Identifier_02匹配不上原来的userid_01,表现就是数据丢失变成一个新的账号。

过程

1、准备

        p8文件里拿的key,teamid,kid,bundleId,旧的账号下的accountId,注意迁移动作不可逆

2、名词

        账号A :旧的账号,需要转出的账号

        账号B:新的账号,转出目标账号

        accountId:苹果授权登录返回的唯一id

        tranferSub: 转换中间状态的id

3、流程

        1、账号A申请转移到账号B:在开发者后台申请 申请方和接收方都需要操作,需要苹果审核,这一步是将两个账号联系起来,审核通过后,进入60天的数据同步期,新的用户数据会被同步到账号B下

        2、数据同步:账号A -> 中间状态temp(tranferSub) ->账号B,               

        3、其他:firebase平台替换push证书(teamID和P8文件)

        4、注意:账号B一旦开启了接受转移,同一个苹果账号再去登录时 就已经是新的accountId了,也就是个业务新账号(uid)了,所以这里一定要先把苹果登录暂停了,避免脏数据

4、实操步骤和代码

        这中间需要分别拿到账号A和账号BClientSecret和AccessToken 两个值

        正常的accountiD= 000819.5e6660b7c0d743209502d4752cd9c80f.2122 (注意看是3段)

        中间状态的sub= 000819.re79de9436ffc4b36bdb777030702d4cb 注意这里少一段

        使用到的三个苹果接口

                1、 /auth/token 接口拿到AccessToken值

                 2、/auth/usermigrationinfo 拿到中间tranferSub值

                  3、/auth/usermigrationinfo 拿到最终的苹果ID (和上面的是同一个接口,但是请求参数不一样)

Java核心工具类:

package user.helper.auth;

import com.alibaba.fastjson.JSONObject;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
impo
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值