QQ第三方登陆的那些坑(不同应用的用户openid不一致),存量用户OpenID转UnionID的方法

分享 未结 10 1472
瓦刀
瓦刀 站长 5月15日 15:10 编辑
点击群号免费加入尼特社区交流群:813128395
<p id="descriptionP"><p>&nbsp; &nbsp; &nbsp; 在准备发布<a href="https://m3w.cn/niter" target="_blank"><img style="height: 12px;" src="https://api.xinac.net/icon/?url=https://m3w.cn/niter">NiterApp</a>&nbsp;的时候发现<span style="color: rgb(255, 0, 0);">QQ互联平台下不同应用的openid是不一致的</span>,由于qq互联web版和app版的应用不同,所以同一用户授权登录后获取到的openid是不同的。换句话说,因为之前数据库存储的是用户的openid,所以同一用户在web端和app端授权后将会创建、登录一个不同的账号。这样是肯定不符合需求的。<span style="color: rgb(0, 255, 0);">为了不同应用之间进行用户信息互通,NiterForum最新版本将保存用户的unionID。</span></p><p>&nbsp; &nbsp; &nbsp; 但可通过unionID来获取用户的基本信息。<span style="font-weight: bold;">强烈建议,如果你拥有多个移动应用、网站应用,可通过获取用户的unionID来区分用户的唯一性</span>,因为<span style="color: rgb(255, 0, 0);">只要是同一QQ互联平台下的不同应用,unionID是相同</span>的。换句话说,同一用户,对同一个QQ互联平台下的不同应用,unionID是相同的。(<a href="https://wiki.connect.qq.com/unionid%E4%BB%8B%E7%BB%8D" target="_blank"><img style="height: 12px;" src="https://api.xinac.net/icon/?url=https://wiki.connect.qq.com/unionid%E4%BB%8B%E7%BB%8D">UnionID介绍</a>)</p><blockquote>&nbsp; &nbsp; &nbsp; https请求方式:GET:https://graph.qq.com/oauth2.0/me?access_token=ACCESSTOKEN&amp;unionid=1</blockquote><p></p><p></p><p>&nbsp; &nbsp; &nbsp; 在qq互联官网已支持自助获取<span style="font-weight: bold;">getUnionID接口</span>,详见:<a href="https://wiki.connect.qq.com/qq-%E4%BA%92%E8%81%94unionid%E6%89%93%E9%80%9A%E4%B8%9A%E5%8A%A1%E8%87%AA%E5%8A%A9%E5%A4%84%E7%90%86%E6%8C%87%E5%BC%95" target="_blank"><img style="height: 12px;" src="https://api.xinac.net/icon/?url=https://wiki.connect.qq.com/qq-%E4%BA%92%E8%81%94unionid%E6%89%93%E9%80%9A%E4%B8%9A%E5%8A%A1%E8%87%AA%E5%8A%A9%E5%A4%84%E7%90%86%E6%8C%87%E5%BC%95">QQ互联UnionID打通业务自助处理指引</a></p><p>&nbsp; &nbsp;<img src="https://qqadapt.qpic.cn/txdocpic/0/e0eccf914ea8606796a858838521bfc6/0" style="max-width:100%;"><br></p><p>&nbsp; &nbsp; &nbsp;但是看到此不要高兴得太早,<span style="font-weight: bold;">如果你原来有web或者app应用并且有<span style="text-decoration-line: underline;">留存用户数据</span></span>。那么好了,不同应用的用户的 OPENID 还是不同的 ,只有unionid 才会相同。<span style="color: rgb(255, 0, 0);">现有的me接口支持获取unionid,但需要带token。如果token过期,存量用户将无法转换。</span>因此qq互联提供免token转换接口<span style="font-weight: bold;">get_ unionid</span>。 该接口不对外公开使用,需要开发者申请使用。</p><p>&nbsp; &nbsp; &nbsp;也就是说,你需要发邮件给<span style="text-decoration-line: underline;">connect@qq.com</span>, 申请 存量用户 转为 unionid 的临时接口, 并提供临时接口使用的APPID 和APPKEY。然后大概需要等待大概一周左右的时间。</p><p>&nbsp; &nbsp; &nbsp;拿到临时接口后, 按照再次回复中临时接口的使用方法,<span style="font-weight: bold;">遍历</span>所有每个用户的原有OPENID ,再查询到新的 unionid,然后<span style="font-weight: bold;">更新</span>原有登陆凭证即可。</p><p>&nbsp; &nbsp; &nbsp;<span style="color: rgb(0, 255, 0);">建议</span>:<br> (1)应该注意保存openID、<span style="font-weight: bold;">unionID</span>信息,以便以后在不同应用之间进行用户信息互通;<br> (2)同一开发者名下最多支持<span style="font-weight: bold;">60个应用</span>进行UnionID打通;<br> (3) unionID至少是36个字节长度,建议预留<span style="font-weight: bold;">64字节</span>存储空间。</p></p>
收藏(1)  分享
相关标签: qq互联 OpenID UnionID 登录 授权 第三方 存量用户 教程 讨论
注意:本文归作者所有,未经作者允许,不得转载
10个回复
  • MSJ
    5月19日 11:54
    建议更换编辑器
    0 0