苹果手机下载游戏显示获取access token获取失败失败

&&&&解决微信AccessToken每天最多请求200次的问题
解决微信AccessToken每天最多请求200次的问题
解决微信AccessToken每天最多请求200次的问题,亲测过,绝对好用
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动***等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
开发技术下载排行为了账号安全,请及时绑定邮箱和手机
为什么 我获取的access_token开始没有问题 后面就出现问题了?
代码开始运行都是正常的
但是过一段时间 运行同样的代码就 返回40001
求大神解决
写下你的评论...
什么bug啊???
写下你的评论...
Copyright (C)
All Rights Reserved | 京ICP备 号-2查看: 6568|回复: 1
最后登录注册时间阅读权限100精华0帖子
性别男幸福币0 经验195 帖子
本帖最后由 Joejiao 于
09:35 编辑
1.& && &QQ账号和微信账号都是数字吗?如果都是数字,可以作为作为Game DB的账号字符串(编号)吗?答:游戏的客户端和Gamesvr都无法直接获取到用户的QQ号和微信账号,只能获取到通过加密处理的“openid”作为用户的唯一身份标识,openid可作为Game DB的账号字符串。“openid”是一个包含数字,字母,符号等的随机字符串,MSDK建议长度设置成128字节.&&QQ账号对应的openid范例:AECAC2D94EB37&&微信账号对应的openid范例:oGRTijrV0l67hDGN7dstOl8CphN0
2.& && &QQ和微信是完全不同的账号吗?答:1. QQ号和微信号获取到的用户openid是完全不一样的,所以他们是两个完全不同的账号体系;2.在Android和IOS系统下同一个QQ号或微信号获得的openid是一样的;3.IOS上的游戏数据不能和Android系统互通,所以需要根据系统来区分用户账号; 3.& && &Android和IOS的用户账号数据必须分开吗?如果一定要分开,原因是什么?答:按照苹果规定IOS用户数据和Android不能互通,因此必须分开。游戏可分为手Q和微信两个大区,数据不互通实现方式建议单个大区内针对具体的不能互通数值分别保存一份ios和一份android的(同一张表不同字段和不同记录),然后逻辑在使用的时候根据用户当前使用的IOS还是Android取对应的数据。
4.& && &Openeid可以直接作为用户的账号存储到DB吗?答:可以。为了更高可用性建议游戏可以按照一定规则将openid转换为游戏内使用的UID(一一对应),优点在于整型索引和存储成本比字符串小很多,也方便后续分模部署等实现,如果转换建议开发独立的uidsvr负责此项功能。
5.& && &同一个QQ号或微信号拿到的用户openid会变吗?答:QQ号和微信号对应的openid只和APPID相关,只要游戏的APPID不变,同一个账号对应的openid就不会变。
6.& && &Openid建议的字符长度是多少?答:建议128字节。
7.& && &QQ和微信账号对应的openid会重复吗?答:不会重复。两者的转换规则不一样,目前未发现重复的案例。
8.& &&&没有***手Q时,为什么会提示登录失败,需要下载手Q才能登录?答:未***手Q时,的确不能使用内置的WEB页面来实现登录(精品游戏因为有特殊权限才可以拉起),需要引导用户去现在最新的手Q,才能登录9.& &&&为什么手机QQ登录的时候会提示“403 Forbidden”?答:请确认调用API的URL是否为正式环境域名,游戏正式上线前只能使用测试环境域名进行功能调试,正式环境权限不会开放,所以如果使用了正式环境的域名因为没有权限,会提示“403 Forbidden”10.& & 为什么微信无法登录?答:请找产品接口人确认微信APPID和APPKEY是否权限已开通,签名,包名等是否已经正确提交并配置。
11.& & 手Q授权后拿到的accesstoken有效期是多久?答:90天,但paytoken过期会导致用户的登录态失效,从而需要用户重新登录。
12.& & Pay_token的有效时间是多久?能自动刷新Pay_token吗? 答:Pay_token有效时间为48小时,需要用户重新登录才能刷新,没有任何接口可以自动刷新。
13.& & 怎么刷新微信accesstoken?答:使用微信客户端拉起授权页面授权以后, 游戏可以获取到微信的accessToken只有两个小时的有效期,授权的同时返回的refreshToken有效期则为30天。 refreshToken的用途就是刷新accessToken, 只要refreshToken不过期就可以通过refreshToken刷新accessToken。 有两种情况需要刷新accessToken, 第一种, 游戏在进行过程中, 调用后台接口或者支付过程中发现accessToken过期; 第二种, 用户授权以后退出游戏, 下一次再进入游戏时候accessToken过期. 要完成此功能需要用到的接口有: WGRefreshWXToken, WGGetLoginRecord, 接口详细说明如下:void WGRefreshWXToken();描述: 微信accessToken续期,调用WGGetLoginRet(LoginRet ret),ret.flag 为eFlag_WX_AccessTokenExpired时调用此接口,刷新微信票据。
刷新accessToken结果通过OnLoginNotify(LoginRet ret)回调给游戏。ret.flag = eFlag_WX_RefreshTokenSucc&&刷新token成功ret.flag = eFlag_WX_RefreshTokenFail& &刷新token失败
调用示例代码如下:WGPlatform::GetInstance()-&WGRefreshWXToken();
回调实现(Demo)代码如下:virtual void OnLoginNotify(LoginRet& loginRet) { if (loginRet.platform ==ePlatform_QQ) {& && &&&... // QQ授权回来的处理逻辑 } else if (loginRet.platform ==ePlatform_Weixin) {& && &&&// 读取微信的授权票据& && &&&switch (loginRet.flag) {& && &&&... // 其他flag的处理& && &&&caseeFlag_WX_RefreshTokenSucc: {& && && && && &// WGRefreshWXToken调用成功// 成功用当前的refreshToken换到新的accessToken& && && && && &std::stringaccessToken = &&;& && && && && &std::stringrefreshToken = &&;& && && && && &for (int i = 0; i &loginRet.token.size(); i++) {& && && && && && && & if(loginRet.token.at(i).type == eToken_WX_Access) {& && && && && && && && && &&&accessToken.assign(loginRet.token.at(i).value);& && && && && && && & } else if(loginRet.token.at(i).type == eToken_WX_Refresh) {& && && && && && && && && &&&refreshToken.assign(loginRet.token.at(i).value);& && && && && && && & }& && && && && &}& && && && && &LOGD(&accessToken: %s&, accessToken.c_str());& && && && && &LOGD(&payToken :%s&, refreshToken.c_str());& && && && && && && &&&}& && &&&caseeFlag_WX_RefreshTokenFail:& && && && && &// WGRefreshWXToken调用过程中网络出错, 刷新失败 //游戏自己决定是否需要重试 WGRefreshWXToken& && && && && && && &&&} }}
14.& & 登出游戏有没有回调?答:没有,也无须回调。
15.& & Mobile QQ, Mobile QZone, QQ账号的 VIP是什么内容?(包括 QQ内容及WeChat的内容)?答:所有QQ账号的vip都是通用的,不区分Mobile QQ,Mobile QZone, QQ账号。不同的增值业务开通的VIP会员身份不一样。QQ账号的VIP目前在MSDK Gamesvr API /profile/load_vip可以获取到三种:QQ会员,QQ蓝钻,QQ红钻;在/relation/qqprofileAPI中可以获取到QQ黄钻的VIP信息。微信账号的vip和QQ账号不一样,只有沃卡(chinaunicom)一种,可以通过Gamesvr API /relation/wxprofile来获取此类VIP信息。 16.& & 为什么手Q登录后无法收到回调?答:AndoridManifest.xml需要进行如下修改:& && & 查找AssitActivity的元素,改成如下:& && &&&&activityandroid:name=&com.mon.AssistActivity&& && && &&&android:theme=&@android:style/Theme.Translucent.NoTitleBar&& && && &&&android:screenOrientation=&portrait& /&
17.& & 为什么部分htc机器(one s, S720t)手Q登录后无法收到回调?答:请将activity修改成如下:& && &&&&activity& && && &&&android:name=&com.mon.AssistActivity&& && && &&&android:screenOrientation=&portrait&& && && &&&android:configChanges=&orientation|screenSize|keyboardHidden&& && && && &android:theme=&@android:style/Theme.Translucent.NoTitleBar&/&
18.& & 为什么部分机器手Q登录后无法收到回调,出现反复授权的死循环?答:横竖屏切换的时候会导致Activity周期重走一遍,导致授权成功后数据没有办法返回到游戏,在activity加上这个属性:
17:59 上传
19.& & 怎么获得APK的应用签名?答:申请微信AppID过程中需要填写的 apk应用签名获取方式: http://open./download/sdk/gen_signature.apk&&将此链接下载的文件***到手机上, 游戏也同时***到手机,输入游戏对应的包名即可获取签名.20.& & 手Q和微信登录过程中出现-20000错误,提示invalid credential是什么原因?答:手Q和微信登录调用的服务端API /auth/verify_login&/auth/check_token,就是判断accesstoken是否过期的,返回这个错误的原因是accesstoken已过期,需要用户重新登录,所以适当的收到此提示属正常范畴,不属于错误,收到此提示后客户端让用户重新登录授权即可。
21.& & 手Q和微信服务端API调用出现invalid credential错误是什么原因?答:此错误说明accesstoken过期,需要客户端重新登录授权,刷新accesstoken,然后拿新的accesstoken来调用API。 22.& & 什么是异帐号,需要怎样实现异帐号提示?答:异帐号是指:游戏授权帐号和平台授权帐号不一致。异帐号情景下:1)游戏通过分享拉起平台,平台会弹框提示异帐号。2)平台拉起游戏 msdk会将平台授权帐号对应的openid通过OnWakeupNotify(WakeupRet ret)方法的ret.open_id回调给游戏,游戏用此openid和已授权openid对比即可判断是否为异帐号,如果是异帐号游戏需要弹框提示用户。注意事项: 1)游戏到微信的异账号只在微信5.0及以上版本才支持。 2)手Q4.6以下版本, 手Q到游戏的异账号在游戏已经启动的情况下没有。
23.& & 为什么登录中会出现110407错误,提示QQ登录已停用?答:游戏未在上提交审核上线前,只有开发者账号和协作者账号能登录,需要通过上线审核后才能开放所有用户登录。
24.& & MsdkCallback的OnLoginNotify(LoginRet ret) 接口回调中,ret的user_id属性始终为空字符串答:user_id 是历史版本的保留字段, 已废弃, 新游戏不使用此字段, 登录完成以后用户id是openId,保存在LoginRet.open_id中, 登录的票据保存在LoginRet.token中. 获取accessToken/payToken的实例代码如下: virtual voidOnLoginNotify(LoginRet& loginRet) { if (loginRet.platform == ePlatform_QQ) {& && &&&// 读取QQ的授权票据& && &&&switch (loginRet.flag) {& && &&&case eFlag_Succ: {& && && && && &// 进行正常游戏登陆逻辑& && && && && &std::string accessToken = &&;& && && && && &std::string payToken = &&;& && && && && &for (int i = 0; i & loginRet.token.size(); i++) {& && && && && && && & if (loginRet.token.at(i).type ==eToken_QQ_Access) {& && && && && && && && && &&&accessToken.assign(loginRet.token.at(i).value);& && && && && && && & } else if (loginRet.token.at(i).type ==eToken_QQ_Pay) {& && && && && && && && && &&&payToken.assign(loginRet.token.at(i).value);& && && && && && && & }& && && && && &}& && && && && && && &&&}& && &&&case eFlag_QQ_NotInstall:& && &&&case eFlag_QQ_NotSupportApi:& && && && && &// 没有***或者版本太低, 引导用户下载新版手Q& && && && && && && &&&case eFlag_QQ_UserCancel:& && && && && &// 用户取消, 提示用户重新授权& && && && && && && &&&case eFlag_QQ_NoAcessToken:& && &&&case eFlag_QQ_LoginFail:& && &&&case eFlag_QQ_NetworkErr:& && && && && &// 授权过程中网络失败, 或者其他错误,引导用户重新授权即可& && && && && && && &&&} } else if (loginRet.platform == ePlatform_Weixin) {& && &&&... }} 25.& & 微信国际版支持用户授权登录吗?答:支持,但不建议使用微信国际版来调试游戏的相关平台功能,因为微信国际版的更新没有中文版快,可能部分新增的能力无法调试。
26.& & 手机QQ国际版支持用户授权登录吗?& &答:不支持,会导致游戏直接crash,如果有需求要支持,可以由运营接口人提需求至MSDK。
最后登录注册时间阅读权限100精华0帖子
性别女幸福币0 经验347 帖子
Powered by

参考资料

 

随机推荐