目录

没帮助

初始化配置类

1.接入前游戏需要做哪些事情

答:游戏接入前请详细阅读MSDK接入指引wiki

2.MSDK的所有功能都是需要接入的吗?

答:MSDK除登录+支付基础功能外,其他功能根据开发商需求按需接入的。注意权限未开通接口不调用。

3.如何切换正式环境

答:MSDK测试环境下测试通过后可以切换正式环境

MSDK客户端域名切换正式环境:http://msdk.qq.com,后台API接口使用http://msdk.qq.com,域名配置详情见问题

4.我们游戏该使用哪个域名?

温馨提示:一次只能打开其中一个域名,不使用域名请注释上线前请切换到正式域名,注意客户端和后台域名保持一致。

非(自研、精品)游戏使用msdk组域名。

测试:http://msdktest.qq.com

正式:http://msdk.qq.com

5.自研游戏或精品代理游戏请使用此组域名, 使用其中一个域名

客户端:测试环境10.194.146.218 msdktest.qq.com

正式环境客户端使用 msdk.qq.com

服务端:正式环境(内网IDC)的gameSvr访问MSDK域名:msdk.tencent-cloud.net (TGW)

压测环境:10.217.143.5:8080

备注:需要保持客户端和服务端域名一致,上线之前请切换正式环境(为了防止游戏用测试环境上线, SDK内检测到游戏使用测试环境或者开发环境时, 会Toast出类似: “You are using http://msdktest.qq.com” 这样的提示, 游戏切换成

正式环境域名以后此提示自动消失.)

Ps:域名前面的 ; 为注释功能,如果切换域名请再其他域名前使用 ;注释

注意MSDK域名配置请遵循以上游戏域名规则配置,如域名配置错误将造成登录失败等问题。

Android修改域名文件-----assets/msdkconfig.ini,修改方法选择自己游戏使用域名去掉前面的分号,其他部分直接用分号注释掉

IOS修改域名文件-------域名配置在plist文件 配置MSDK_URL

6.初始化需要在baseInfo如何配置?

答:初始需要配置游戏自己的qqAppId qqAppKey wxAppId wxAppKey offerId(必填写androidofferId=手Qappid,IOS需单独联系midas申请)


7.引入MSDK库需要注意的事项有哪些?

答:1). 不能使用Android Library Project的游戏, 需要复制libs, res两个目录到游戏工程相应目录.

2). 游戏工程的存放路径请需要使用中文路径.

3). 引入MSDKLibrary以后编译发生包冲突(重复), 因为MSDK里面已经包含了 微信SDK(libammsdk.jar), QQ互联sdk(open_sdk.jar), MTA(mta-xxx.jar), 灯塔SDK(beacon-xxx.jar), 切上述sdk均是其最新稳定版, 游戏如果以前有单独集成这些SDK, 请删除之前集成的jar包.

4). 游戏需要加载必要的数据上报动态库文件,在demo中的MainActivity.java文件中

static {

System.loadLibrary("NativeRQD"); // 游戏需要加载此动态库, 数据上报

}

5).工程部署完以后删除MSDKSample\jni\com_example_wegame_PlatformTest.cpp

// 下面是MSDKSample使用的逻辑, 游戏忽略此部分内容

jclass cls = mEnv->GetObjectClass(gActivity);

jmethodID method = mEnv->GetMethodID(cls, "stopWaiting", "()V");

mEnv->CallVoidMethod(gActivity, method);

此部分,如果不删除可能会导致登录收到回调,然后游戏直接奔溃

6). 游戏工程一定要关联MSDKLibrary文件


9.游戏引入MSDKLibrary库后,启动游戏直接闪退了。

答:此类问题需游戏按照MSDK接入指引文档进行配置,检查log点为MsdkDoctor,例如,确认游戏重新编的时候有没有clean,麻烦将游戏clean一下重新编下。看下ant编译脚本 有没有对游戏工程的lib目录做清除动作,现在就是游戏自己的lib没有打到apk里。

Ps:关于引入闪退请按照MSDK接入文档接入。

9.手Q登录和微信登录的场景怎么样才是正常?

答: 手Q(安装)手Q登录--(未安装)---拉起内置浏览器webviewQQ进行授权登录/或者跳转引导手Q下载页面

二次登录:读取本地有效票据直接进入游戏,票据无效到登录界面

微信(安装)微信登录---(未安装)---IOS隐藏微信登录接口/Android提示用户微信未安装

二次登录:读取本地有效票据直接进入游戏,票据无效到登录界面


10.未安装手Q拉起的web授权点击取消crash或提示网络错误

解决方案:将MSDK的jar包中的assets解压放入Android/assets中

登录和账号相关

1.同一个QQ号或微信号拿到的用户openid会变吗?

答:QQ号和微信号对应的openid只和APPID相关,只要游戏的APPID不变,同一个账号对应的openid就不会变。

2.手机QQ国际版支持用户授权登录吗?

答:不支持,HD QQ 也不支持。

3.手Q接入配置需要注意的事项

答:游戏请按照MSDKSample中给到的配置示例配置自己的游戏

手Q接入配置(AndroidMenifest.xml)对游戏进行配置

4.手Q登录报错100044

答:用同个keystore证书打包得到的签名是一样的;游戏在open上面上传的apk包和接入MSDK的apk包用同一个签名文件

签名生成见附录:

http://wiki.mg.open.qq.com/index.php?title=%E5%85%B6%E4%BB%96#.E9.99.84.E5.BD.95.EF.BC.9A

5.错误码110404:手Q登录报错110404,原因请求参数缺少appid或者appid错误

答:appid错误也会报这个错误,检查appid,重点看appid中有没有空格,因为MSDK没有做消除空格的工作,很可能因为不小心加了空格导致错误。

6. 手Q登录失败报错-502 sig error

答:检查appkey,检查方法,对照自己游戏管理中心是否配置有误,如无误依旧报错请联系联调人员。

7. 手机QQ国际版支持用户授权登录吗?

答:不支持,会导致游戏直接crash,如果有需求要支持,可以由运营接口人提需求至MSDK。

8. 登录手Qlog报错 -504 appid not exist(手机上有显示110406错误)

答:确认手Qappid是否配置正确,确认appid是否未审核,如未审核联系企业QQ产品支持进行审核

9. 游戏登录提示“当前服务不可用”log返回flag-3 qq user not in white list

答:游戏打开了应用宝抢号,如游戏不使用此功能,请关闭,关闭方法assets/msdkconfig.ini关闭。

10. IOS登录安装了手Q,没有拉起手Q而是拉起了web授权?

答:plist文件配置大小写敏感,注意大小写。初始化配置URL_Type处配置错误,检查URL_TYPES初始化配置scheme配置(tencent+手Qappid)。

11. IOS版本未安装手Q拉起了外部浏览器

答:此种情况请联系联调人员确认是否具有Webview权限。

12. 使用android PAD 有QQ客户端的情况下依旧拉起了webview授权页

答:ipad的QQ支持SSO,Android的不支持SSO,Android建议使用webview授权。

13. 游戏如何判断手Q票据过期时间

答:开发商无需关注,调用登录接口即可,此逻辑有MSDK完成。

14. 修改当前时间为未到时间,然后使用QQ授权登录,授权登录成功后,再把时间调回目前实时时间,结果是可以登录。

答:这是属于正常的,MSDK没有拿时间戳做强校验。

15. 每次登录进去都不会自动登录,都会在登录界面需要再次选择登录方式?

答:如果本地票据有效就会快速进入游戏,此种情况判断为游戏在退出时候可能主动清空了本地有效票据,因为MSDK在每次登录的时候都会去读本地票据。本地票据为空或者无效都会提示选择登陆方式重新上传,MSDK不建议游戏进程退出清空本地有效票据,客户端票据清空接口WGLogout。

16. 测试环境下在手Q授权页面,icon图标不能正常显示

答:此种问题游戏无需关注,游戏正式上线以后就可以正常显示。

17. WGLoginWithLocalInfo方法 是否可以替代/auth/verify_login/这个接口

答:不可以的,/auth/verify_login/这个接口是验证手Q登陆票据,WGLoginWithLocalInfo这个接口是客户端获取本地票据用作快速登陆的。

18. 游戏如何配置自动登录

答:手Q&微信&游客调用的接口都是WGLoginWithLocalInfo,详细调用规则请参考MSDK客户端接入文档指引以及demo调用情况。

<Android & IOS 通用此接口>。

19. 更改了授权的QQ昵称和头像之后,游戏头像和昵称未变化?

答:由于时效性(1小时),和缓存问题导致。清除缓存信息同步。

20. 一个QQ号可能对应了多个分区账号,当他的好友拉取好友数据时,可能会拿到多个账号的数据,这个问题如何处理?

答:MSDK拉取到的只是用户的基本信息,游戏相关的数据都是游戏自己保存,游戏可以在拿到用户的个人信息以后再带上分区的信息去游戏后台拉对应分区的用户信息

21. 微信国际版支持用户授权登录吗?

答:支持,但不建议使用微信国际版来调试游戏的相关平台功能,因为微信国际版的更新没有中文版快,可能部分新增的能力无法调试。

22. 游戏使用多个activity导致微信登录票据传递异常

答:建议游戏使用一个activity.

23. 微信授权登入后,平台数据回调回来的原理是怎样?

答:msdk现在代码的处理逻辑是微信登陆成功后,微信返回的数据会先在WXEntryActivity里进行处理,然后拉起launchactivity,回调的intent,在handleCallback里处理。如果要分在两个activity里处理的话,就得保证首先第一个activity没有destroy,并且微信返回给第一个activity的intent也传给了第二个activity。

微信的回调intent是传递到main入口activity的,这个activity如果和游戏主activity不是同一个的话,要在onNewIntent处理中把intent传递给主activity,主activity再调用平台的handcallback。

24. 为什么微信登录拉不起微信客户端?

答:签名不对,处理办法如下:见附录

http://wiki.mg.open.qq.com/index.php?title=%E5%85%B6%E4%BB%96#.E9.99.84.E5.BD.95.EF.BC.9A)

关于签名问题解决方案

25. 为什么微信登录登录不了?

答:检测log中是否有lauchWXPlatForm wx SendReqRet:true有这一句表示已经成功发送请求到微信,如果微信客户端不能被拉起来,请查看签名信息,如果微信客户端被拉起了,但是没有回调,请看(以下内容)

第一步:检查AndroidMainfest.xml文件

AndroidMainfest.xml中package="com.example.wegame"配置自己游戏包名

例如:<activity android:name="com.example.wegame.wxapi.WXEntryActivity"

com.example.wegame为自己游戏包名

.wxapi.WXEntryActivity必须加在自己游戏包名的后面

配置文件.png

第二步:EntryActivity.java放置的位置(此文件在MSDKSample中)

此文件一定要放在 游戏包名+.wxapi 下面,例如游戏的包名为:com.tencent.tmgp.xxxxxxx 则

WXEntryActivity.java 应该放在com.tencent.tmgp.xxxxxxx.wxapi下。

第三步:检查handleCallback

确认是否在主Activity 中实现onNewIntent

游戏的Launch Activity的onCreate和onNewIntent里面是否调用了WGPlatform.handleCallback。

第四步:检查游戏的全局Observer是否设置

检查游戏有没有正确调用WGSetObserver(C++层和Java层)。

26.IOS微信登录点击授权页允许的时候卡住

答:在工程infode UrlTypes配置文件scheme处配置微信appid。

27. 微信登录登录报错“Scope参数错误或没有Scope权限“

答:没有微信登录权限,如有此类问题联系联调人员。

28. 游戏如何判断微信票据过期时间

答:开发商无需关注,调用登录接口即可,此逻辑有MSDK完成,详情见接口WGLoginWithLocalInfo调用说明。

29. 为什么现在使用微信授权,直接连询问都没有了呢?

答:微信平台记录帐号授权,属于正常,如需解除授权,在微信中-游戏-游戏管理找到需解除授权的游戏进行解除授权操作,游戏清空本地票据后再次进入授权界面进行微信授权将和初次授权一样显示授权按钮,此接触不会清空游戏使用微信登录的信息。

30.先启动微信,登录帐号,然后启动MSDKSxample,点“微信登录”,不能拉起微信

答:请Build msdksample使用的签名文件,文件位置MSDKSample\debug.keystore由于微信登录需要验证签名,包名信息,不能使用MSDKsample测试的wxappids,请直接用自己的游戏登陆。

31.游戏拉起微信登陆,返回信息-502 sig error

答:重点检查appkey是否有误,比如空格和误输入导致失败。

32.IOS微信登陆授权提示未安装微信,但是有安装微信。报错flag2000

答:参数配置错误,大小写敏感,请正确填写大小写。

33.微信授权闪退,提示WXENtryActivity初始化失败

答:由于MSDK版本升级到2.0.3后 WXEntryActivity 的父类名字有修改(老版本为:WXEntryActivity,新版本为:BaseWXEntryActivity)和1.7.4无法兼容引起的。

34.登录收不到回调处理办法

答:因为微信和手Q各自的bug,会导致游戏在多个场景下收不到回调。游戏在调用WGLogin后可以开始一个倒计时, 倒计时完毕如果没有收到回调则算作超时, 让用户回到登录界面。倒计时推荐时间为30s

游戏也可以自己设置其中收不到回调的场景包括但不限于:

在微信未登录的情况下, 游戏拉起微信输入用户名密码以后登录, 可能会没有登录回调, 这是微信客户端已知BUG

微信授权过程中, 点击左上角的 返回 按钮, 可能会导致没有授权回调

openSDK 2.7 (MSDK 2.5)以下版本通过web授权点击取消授权以后没有回调

35.IOS设备,通过微信客户端最近在玩拉起游戏,没有异账号提醒

答:MSDK老版本已知问题,没有异账号提醒,游戏可通过对比openid来区分异账号;新版本MSDK2.6.2已修复此问题。

游客模式

34.游客模式登录获取到的GuestID有"@ - + "是否正常?

答:这个属于正常。

35.同一台设备是否可以同时获取多个GuestID?

答:2.0.5i版本前同一台设备只能获取到同一个GuestID,之后的版本游戏重置GuestID之后游戏将获取到不同的ID。

36.做游客模式的时候,是否需要存数据?

答:游客模式下的游客帐号信息(包括角色信息、游戏进度、虚拟资产信息等)可在本机上做本地储存,玩家在下次进入游客模式后可以继续游戏进度。

37.如果存数据,引导登陆是不是不需要联网呢?

答:Guest模式下用户数据保存在本地,但是二次登录/鉴权的时候需要和MSDK后台服务器交互,所以需要玩家联网完成。

38.游客模式下公告登录前公告不显示

答:由于游戏调用了快速登录接口,游客模式下不支持公告功能模块,所以建议游戏在游客模式下二次登录不做快速登录。

39.guest_check_token返回错误“GuestWrap::Decrypt oi_symmetry_decrypt2 faild”如何处理?

答:解密验证GuestID和accessToken失败,请检查后台输入与App输出参数是否一致,是否发生了截取或编码。

温馨提示:以下内容需相应接口权限方可调用,权限问题请联系游戏PM,外部游戏联系商务

40.IOS出现正常的授权界面之后,又会出现第二次授权,第二次授权提示是要下载最新qq(已安装qq)

答:连续调用了两次登录接口,需要开发商检查代码确认逻辑。

41.获取位置相关信息的时间较长这个是否正常

答:获取位置相关信息首先要通过手机进行GPS定位,再发送网络请求。GPS定位速度和机型及所在环境有关,一般耗时较多,定位失败超时是10秒,所以整体速度会比较慢。


后台接口

温馨提示:详细阅读文档有助于快速接入调用后台接口返回错误多为参数错误,请仔细检查参数。

关于后台接口调用前需要注意的是:

a) 详细阅读MSDK-后台API接入指引,调用某个接口前请详细阅读接口下参数.

b) 需要注意一下几点,参数类型的区别,目前msdk后台接口参数类型未做兼容,尤其注意 Int和Sting的区分

c) 接口下若使用到票据信息,调试期间需要使用最新的票据

d) 注意使用的域名和客户端使用域名一致

e) url中手Qappid和wxappid请勿混淆

f) 登陆分为手Q和微信,手Q和微信属于两套单独的登陆平台系统,分别有手Qappid、手Qappkey。登陆使用手Qappid、appkey,包括msdk后台接口,微信同上。由于2.8.1版本之后的msdk客户端改造,授权统一配置msdkkey,后台接口url中如果encode=2,那么加密使用的 appkey为msdkkey值;如果为1,那么加密key值使用同平台的appkey值,不区分正式、测试环境参数

g) 请求中使用的票据信息为客户端登录返回,请确认参数值传递是否正确

h) MSDK后台接口请求为post请求.

后台接口报错排查思路:由于参数之间存在相互依赖关系,报错可能不是该参数导致,如有报错请细致排查该接口下每一个输入参数。

后台接口非通用接口,不用登录平台使用后台验证接口不一样,此处需调用前注意。

1 使用/auth/verify_login appid使用手Qappid------------------手Q鉴权

2. 使用auth/check_token appid使用wxappid_---------------微信鉴权

3. 使用auth/guest_check_token appid使用G_+手Qappid------游客模式鉴权

常见问题示例


msdk登录连接的时候是否支持http长连接的模式访问

答:支持长链接url中添加conn=1,表示长链接,并且不断开链接

为什么调用后台接口请求,无任何返回。

答:此种情况请为请求未发出,请检查请求环境。

调用后台接口返回{"ret":-501,"msg":"http body can not be emtpy!"}

答:输入参数为空,此种问题检查该请求方法。

调用接口报错{"msg":"sig error!","ret":-502}

答:计算sig错误,此种问题建议检查appkey以及计算sig方法是否有误。

Ps:$sig = md5 ( $appkey . $timestamp )


调用后台接口报错{"ret":-304,"msg":"format json data error!"}

答:请求参数不是json格式,请使用json格式请求。

调用/auth/verify_login验证登陆信息,{"err_type":2,"msg":"-22,openid is invalid","ret":-10000}

答:登录态过期,重新登录解决。(处理方法:可能是参数配置有误,请开发商检查配置的参数是否有误,对照MSDK后台API接入文档。)


调用/auth/check_token报错{"err_type":"2","msg":"40001,invalid credential","ret":-20000}

答:此种情况较为常见原因为:

a)票据过期<重新登录>

b)票据传递错误<若排除a对比登录返回token是否传递错误,可能存在传递不完整,或者传递了续期票据>

调用微信接口报错"msg":"42005,api usage expired","ret":-20000,"type":""}

答:此接口为遇到api过期,让产品找微信的人kantzou续期即可

调用relation/qqfriends_detail接口报错,"msg":"100030,this api without user authorization","ret":-10000"

答: WGPlatform.WGSetPermission(WGQZonePermissions.eOPEN_ALL); // 设置拉起QQ时候需要用户授权的项

设置获取全部权限,不然可能会导致100030错误

调用/auth/verify_login报错ret":-2010,"msg":"app has no msdk permission.empty config node:service.appkey.appid_0","err_type","5"

答:引导开发商使用http://msdktest.qq.com ,开始初次使用opensdktest.tencent.com组域名,游戏信息未同步至opensdk环境,后续新游戏接入引导游戏使用msdk组域名

调用调用/auth/verify_login返回{"err_type":"1","msg":"-69,internal error","ret":-10000}或者{"err_type":"1","msg":"-74,internal error","ret":-10000}

答:-69,“internal error”表示应用不在权限系统里此问题此问题如果反复出现或者必现请联系联调人员。-73,表示用户修改了密码,导致token失效。