背景
要在App Store 新上架的App要在4月份前适配iOS 13,其中App如果使用了第三方登录的,就要同时支持AppleId 登录,也是一种第三方登录.
先放一个时序图:
第一步,客户端和AppleServer交互后请求后端
客户端向苹果服务器请求,拿到用户的信息和identityToken.主要返回数据如下:
- user: 用户唯一ID,在一个开发者账号下的APP获取到的是一样的,类似微信开发API中的openid;
- identityToken: 「JWT」格式的token,用于验证信息合法性。
- email: 用户邮箱(可能为空)
- fullName: 昵称等信息
- realUserStatus: 是否是“真实用户”,可用于反作弊,对抗黑灰产. (0为黑户,1为不确定,2为正常用户)
拿到信息后调用接口,把信息传给后端,但这样有个重要的问题就是不能保证安全性,无法判断请求是否是伪造的。这个时候就要使用identityToken了。
注意:当第一次认证成功之后,将不会再返回email,fullName等信息,可以在设置->Apple ID->密码与安全性->使用您AppleID的App 中删除对应的APP。
第二步,后端校验identityToken合法性
identityTokenString实际上是JWT(JSON Web Token)格式的文件,JWT文件由三部分组成:
- Header
- Payload
- Signature