iOS,Sign in with apple transfer


一、原因

不同的开发者账号主体,苹果登录生成的唯一标识不一样,

导致了应用迁移后,通过Sign in with apple 登录,获取到的Identifier值和原来不一致。

如果应用原先通过这个作为userid的关联映射,没有做好这个转化的话,将会产生用户数据丢失的严重影响。

账号A:Identifier_01 -> userid_01

账号B:Identifier_02 -> userid_02

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

二、解决方案

问题已经出现,接下来是解决方案。

首先还是看看有没有官方文档可以查阅。

Transferring Your Apps and Users to Another Team

apple 账号迁移描述

通过查阅文档,发现幸好苹果爸爸提供了转化条件。这里的transfer_sub就是玩家的,账号B:Identifier_02


转化图示


此时,解决方案大致已经明了

步骤

1、通过转化工具提前获取玩家的 Identifier_02

2、将Identifier_02刷回原来的玩家数据库,覆盖旧的账号Identifier_01

3、玩家重新登录,Identifier_02能正确匹配到原来的数据


三、转化工具

(1)生成关键的screctKey.p8,

作为账号A、账号B之间的token转化关联参数用

注:账号A(oldKey.p8)、账号B(newKey.p8)都需要生成


点击生成
下载


生成好之后,下载下来应该是这样(注意保存和区分,过后要用):


文件内容

(2)进行转化

这时候到github上查找类似的工具使用,

根据文档查找关键词 transfer_sub

https://github.com/search?p=4&q=transfer_sub&type=Code

发现这位国外的热心老哥做了一个好用的工具,是用ruby写的。

工程地址:https://github.com/vincent-the/apple_sub_migration

配置好参数

由于我这里一直遇到openssl报错,所以做了一点小调整,将key的读取改为读取file的形式,。

效果如下图:


修改读取文件
配置key内容


修改git工程里的读取值改为你转移前后的参数:

编辑配置文件,apple.rb

配置参数

team_id,apple开发者账号的team字段

key_id,生成p8时自带,AuthKey_xxx,"xxx"这部分的值

client_id,即应用的bundle id

参数配置完毕,

运行查看转化后的结果


运行结果



参考链接:

https://github.com/vincent-the/apple_sub_migration

https://www.belmeng.com/sign-in-with-apple-transfer/

你可能感兴趣的:(iOS,Sign in with apple transfer)