使用第三方登录:
常用的就是微信登录,apple登录,现在比较流行的手机号码一键登录。这里需要根据手机系统的不同,iOS13才有的apple登录,手机是否安装微信等等一系列情况。以微信和apple这两种举例
if(version >= iOS13)
{
If (wechat)
{
wechat && apple
}
else
{
apple
}
}
Else
{
If (wechat)
{
Wechat
}
else
{
什么都没有
}
}
这里需要注意的就是apple登录,苹果那边对这个卡的比较严,苹果登录之后不能强制绑定手机号码,这点要注意。
这次就说这种情况,苹果不允许的情况,以手机号作为当前用户的必要属性:
用户选择微信登录,通过微信sdk获取到unionid,后端去验证当前的unionid是否已经绑定了用户,如果绑定了,返回一个用户身份令牌(token,与用户的手机号有关联)用户登录成功。要是没有绑定,需要用户绑定手机号,并把当前的unionid和用户绑定,同时返回用户一个身份令牌,完成登录。
用户选择苹果登录,流程类似,不过绑定关联的是ASAuthorizationAppleIDCredential的user属性。
在这里我想说的是三方登录的设计理念,使用手机号作为用户的必要属性,后续的接口设计和业务设计都是以手机号为必要属性设计,这样的处理对于前后端的功能和流程设计显得尤为重要。比如用户更换手机号绑定这种情况,如果身份令牌和手机号相关联,那么用户绑定手机号之后,用户的身份令牌必然发生变化,此时就需要用户重新登录,可以在前端进行重新登录,也可以由后端执行更新令牌之后通知前端进行令牌更新。这样的设计理念比较简单,各端比较统一,各个功能的设计也有依据。
再有就是其他的比较复杂的设计,用户选择一种登录方式,在某些特定功能使用之前,用户并不需要其他的方式绑定账号。这样的设计思路很多,实现起来也比较复杂,结合实际的业务和功能需要再进行设计,作为一个前端对于token的理解有点局限,从服务端做配置方案更高级。