1. 程式人生 > >騰訊MSDK手Q微信授權登入

騰訊MSDK手Q微信授權登入

其實MSDK WIKI講的很詳細,這裡就只挑重點了

名詞解釋

名稱 名詞概述
平臺 微信,手Q統稱平臺
openId 使用者授權後平臺返回的唯一標識
accessToken 使用者授權票據, 獲取此票據以後可以認為使用者已經授權, 分享/支付等功能需要此票據. 手Q的accessToken有效時間為90天. 微信的accessToken有效時間為2小時.
payToken 支付票據, 此票據用於手Q支付, 手Q授權會返回此票據。微信授權不會返回此票據. 有效時間為6天
offerId 支付時使用,安卓的offerid為手Qappid
refreshToken 微信平臺特有票據, 有效期為30天, 用於微信accessToken過期之後重新整理accessToken.
MSDKkey MSDK前後臺互動使用id,該key從MSDK 2.8.1版本開始使用,詳情請點選檢視 Android 2.8.1變更內容
異帳號 遊戲中授權的賬號和手Q/微信中授權的賬號不相同, 此種場景稱之為異賬號.
結構化訊息 分享訊息的一種, 此種訊息分享後的展示形式為: 左邊縮圖, 右上是訊息標題, 右下是訊息概要。
大圖訊息 分享訊息的一種, 此種訊息只包含一張圖片, 顯示也只有一張圖片. 也叫做大圖分享, 純圖分享。
同玩好友 手Q或微信好友中玩過同一個遊戲的稱為同玩好友
遊戲中心 手Q客戶端或微信客戶端中的遊戲中心統稱遊戲中心。
遊戲大廳 特指 QQ遊戲大廳
平臺喚起 通過平臺或渠道(手Q/微信/遊戲大廳/應用寶等)啟動遊戲
關係鏈 使用者在平臺上的好友關係
會話 手Q或微信的聊天資訊
安裝渠道 遊戲上線前打包會根據不同渠道(例如應用寶,豌豆莢,91等)生成不同渠道號的apk包, 在安裝包中的渠道號稱之為安裝渠道.
註冊渠道 使用者首次登陸時, 遊戲的安裝渠道, 會在MSDK後臺記錄, 算作使用者註冊渠道.
Pf 支付需要使用到的欄位, 用於資料分析使用, pf的組成為: 喚起平臺_賬號體系-註冊渠道-作業系統-安裝渠道-賬號體系-appid-openid.例如:desktop_m_qq-73213123-android-73213123-qq-100703379-A65A1614A2F930A0CD4C2FB2C4C5DBE1
pfKey 支付使用

推薦登入流程


注意:

在需要使用本地票據登入時,不再需要呼叫WGLoginWithLocalInfo改為呼叫WGLogin(EPlatform.ePlatform_None) ,然後等待onLoginNotify的結果。

正常授權都會通過OnLoginNotify回調回來,會得到一個token陣列,微信和手Q的Token不同,

token會過期,手Q需要定時呼叫WGGetLoginRecord進行token的檢查,比如25分鐘呼叫一次,如果過期了則需要提示玩家重新授權。

微信的話建議配置自動重新整理,將msdkconfig.ini中WXTOKEN_REFRESH按如下設定WXTOKEN_REFRESH=true或者不設定(即預設是開啟的)

重新整理間隔預設30分鐘,CHECK_TOKEN_TIME=30

這裡需要注意一點,從遊戲中心啟動,或者從分享的結構化訊息跳轉到APP,需要處理異賬號功能,

主要處理OnWakeupNotify回撥,這裡有兩種情況,一種是遊戲已經在執行中的,此時可以立即對OnWakeupNotify進行處理,另一種就是遊戲在未啟動的情況下被喚醒,此時可能遊戲本身進入時需要進行資源載入之類的邏輯,所以需要對OnWakeupNotify的資料進行快取,等到合適的時候再執行異賬號的邏輯處理。

如果是遊戲之前登陸的賬號與平臺賬號一致,則此時flag會是eFlag_Succ或eFlag_AccountRefresh,此時呼叫WGGetLoginRecord獲取本地的票據資訊即可。拿到openid和token就可以登陸到GameServer了,也可以呼叫WGLogin(EPlatform.ePlatform_None),然後等OnLoginNotify的回撥,執行正常的授權登入流程。當然如果你遊戲本身已經是執行狀態了,就不用重新登入了。

如果falg是eFlag_NeedSelectAccount,則需要自己彈個提示框,並讓玩家選擇是否切換賬號,WGSwitchUser(true)是切換使用者,WGSwitchUser(false)則不切換。

切換使用者的話,即呼叫WGSwitchUser(true),然後把玩家踢到,然後呼叫WGLogin拉起授權,此時拉起端會使用平臺的賬號進行拉起授權,而不是你遊戲的賬號,這就是WGSwitchUser的作用。

還有什麼遊戲中心啟動,分享喚醒傳參之類的,都得通過OnWakeupNotify來處理。這裡具體就不展開了,有時間再寫文章絮叨,這些都接過一遍了,一般的問題都遇到過,也都解決了,不懂的兄弟放膽問哈