QQ第三方登陆的那些坑(不同应用的用户openid不一致),存量用户OpenID转UnionID的方法
?? 在準備發布NiterApp?的時候發現QQ互聯平臺下不同應用的openid是不一致的,由于qq互聯web版和app版的應用不同,所以同一用戶授權登錄后獲取到的openid是不同的。換句話說,因為之前數據庫存儲的是用戶的openid,所以同一用戶在web端和app端授權后將會創建、登錄一個不同的賬號。這樣是肯定不符合需求的。為了不同應用之間進行用戶信息互通,NiterForum最新版本將保存用戶的unionID。
? ? ? 但可通過unionID來獲取用戶的基本信息。強烈建議,如果你擁有多個移動應用、網站應用,可通過獲取用戶的unionID來區分用戶的唯一性,因為只要是同一QQ互聯平臺下的不同應用,unionID是相同的。換句話說,同一用戶,對同一個QQ互聯平臺下的不同應用,unionID是相同的。(UnionID介紹)
https請求方式:GET:https://graph.qq.com/oauth2.0/me?access_token=ACCESSTOKEN&unionid=1? ? ? 在qq互聯官網已支持自助獲取getUnionID接口,詳見:QQ互聯UnionID打通業務自助處理指引
? ?
? ? ?但是看到此不要高興得太早,如果你原來有web或者app應用并且有留存用戶數據。那么好了,不同應用的用戶的 OPENID 還是不同的 ,只有unionid 才會相同。現有的me接口支持獲取unionid,但需要帶token。如果token過期,存量用戶將無法轉換。因此qq互聯提供免token轉換接口get_ unionid。 該接口不對外公開使用,需要開發者申請使用。
? ? ?也就是說,你需要發郵件給connect@qq.com, 申請 存量用戶 轉為 unionid 的臨時接口, 并提供臨時接口使用的APPID 和APPKEY。然后大概需要等待大概一周左右的時間。
? ? ?拿到臨時接口后, 按照再次回復中臨時接口的使用方法,遍歷所有每個用戶的原有OPENID ,再查詢到新的 unionid,然后更新原有登陸憑證即可。
? ? ?建議:
(1)應該注意保存openID、unionID信息,以便以后在不同應用之間進行用戶信息互通;
(2)同一開發者名下最多支持60個應用進行UnionID打通;
(3) unionID至少是36個字節長度,建議預留64字節存儲空間。
本文同步于:https://niter.cn/p/193
總結
以上是生活随笔為你收集整理的QQ第三方登陆的那些坑(不同应用的用户openid不一致),存量用户OpenID转UnionID的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从零开始完整开发基于websocket的
- 下一篇: AVI格式详解(转)