第三方授权登录正确的开发方式

第三方授权登录能够直接使用已有的QQ号、微信等登录。减少了注册环节,减少了因为注册而流失的用户。可以直接获取用户昵称、头像等信息,省去再次填写昵称、上传头像的麻烦。下面说说第三方授权登录正确的开发方式。


项目中涉及到3种授权登录形式,分别是微信、QQ和新浪微博。3种平台授权登录的流程大同小异,都是需要在其对应的开放网站上注册应用且产生appid及appsecert(或类似的其它叫法),并利用上述参数按照ahth2方式授权登录。授权的具体流程不是本文讨论的重点,在此略过。授权登录成功后获取到你的应用相对于授权平台的唯一标识(微信、QQ叫openid,新浪微博叫uid)。这时候你要注意了,如果你此时开发的应用场景为移动App应用,并且将来打算开发相应的网页版的项目(反之亦然),你不仅仅需要保存微信、QQ的openid。你还需要想办法获取联合id -unionid(姑且这样称呼它吧)。如何获取呢?下面我来分别说明下。

微信

目前,微信的第三方授权登录是由微信开放平台来承载的。根据其最新的文档,用户通过微信授权登录同时用户授权了获取userinfo时,则授权成功后会出现unionid字段,即微信开放平台会同时返回用户的openid和unionid(移动应用微信登录开发指南)。开发者只需要将openid和unionid都保存到数据库即可。

QQ

QQ授权登录平台要想保存unionid可能要稍微麻烦一点。需要联系QQ客服申请获取unionid的全限。详见常见问题 - 文档资料--QQ互联的问题1。按照其要求发送邮件申请unionid的访问权限即可。正常情况下QQ客服会很快开通权限并回复开发者的申请邮件,并在邮件中比较详细的说明调用接口获取unionid的方式。

新浪微博

还是新浪大大好,新浪微博的移动App和网页版的唯一标识都是统一的uid,无需做额外的操作。

 

上面说了这么多,现在来说明下为什么要这么做。已经保存了openid,为什么还要保存unionid呢?其实可能有些读者已经发现了一些端倪。因为在微信、QQ这两个平台注册应用,移动端App和网页版应用会生成不同的appid,而不同的appid相对应的就是不同的openid。如果不保存unionid,就会出现,同一个微信账号(或QQ号)登录开发者的网页版和移动端App会生成两个不同的第三方账号的尴尬。如果开发者没有意识到本文所说的问题,且已经将服务部署到开发环境了,且又有开发其他终端授权登录的需求,该如何是好?本人将在下篇文章“第三方授权登录踩过的坑”中解答。


附:

微信开放平台文档中心

新浪微博授权登录说明

新浪微博授权机制

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值