腾讯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 支付使用

推荐登录流程

腾讯MSDK手Q微信授权登录_第1张图片

注意:

在需要使用本地票据登录时,不再需要调用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来处理。这里具体就不展开了,有时间再写文章絮叨,这些都接过一遍了,一般的问题都遇到过,也都解决了,不懂的兄弟放胆问哈


你可能感兴趣的:(C#)