QQ游戏 开放平台

欢迎来到QQ游戏开放平台 管理中心 | 注册 | 开发者论坛
蓝钻接入常见问题

1 蓝钻接入常见问题

1.1.1 API调用返回成功(ret为0),但是返回的json串无法解析

问题原因:

可能是字符集配置不当而引起。

腾讯公司分配给第三方的机器,默认字符集是UTF-8,qqgame的API默认字符集是GBK。当调用的API返回结果中存在中文或其他非ASC字符时,就可能导致json解析失败。

解决办法:

1.将所分配的机器的字符集,以及链接该机器的终端的字符集,设置为GBK(推荐做法)
2.在调用API时,在请求串里加上charset=utf-8

1.1.2 openid/openkey/pfkey如何获得

第三方测试时,可以在qq.com上登录后, 浏览器里输入//lobby.minigame.qq.com/cgi-bin/qqgame_launchapp?appid=$appid&type=json, 即可以看到返回的openid/openkey,其中$appid代指你自己的应用id在接入白名单测试后,第三方应用从大厅启动,可以从location.url中获取openid/openkey/pfkey

1.1.3 使用API时,为何报"ret":-193,"msg":"app's request frequency is exceeded the limit"

此错误为API使用频率达到上限。
在正式环境中,API的调用限制策略是单IP每分钟60次,在测试环境中,API的调用限制策略是单AppID每分钟10次。
正式环境下,此限制策略不会造成问题,但在游戏内API调用有错误或者在受到攻击时,可能会造成访问频率达到上限。此时第三方必须通知QQGame,也得检查代码中调用API的逻辑。
测试环境下,当代码中API调用有问题,或者有多人同时测试时,可能会出现频率限制问题,此时,一是要检查API调用逻辑,二是可以向产品提交申请,适当放宽频率限制。

1.1.4 InviteBox调用后,邀请界面不显示

错误原因可能如下:

1.API调用错误,如JS文件包含错误、游戏所在的域名错误
2.邀请界面已经显示,但是被flash图层遮盖,此时必须修改flash的模式,或者隐藏flash
3.页面所包含的JS尚未加载完成就调用了InviteBox。可在onload事件中调用InviteBox。BuyBox也有类似的错误。

1.1.5 客户端游戏接入后,启动时多次报错

错误原因可能如下:

1.游戏内有错误,此点可能性较小,第三方可以自己排查
2.传入的参数错误或者数量错误。游戏大厅通过命令行来启动客户端游戏,该客户端游戏的启动参数,必须严格按照文档中的规定。

1.1.6 以代理模式接入第三方游戏(即类似于公司内部的游戏接入)时,测试环境部署在腾讯公司内网,其IP在外部不可见,因此无法访问测试环境的API

解决办法:

1.由第三方派人到腾讯进行接入测试,测试时访问内网API
2.可把该游戏配置到测试专区进行接入测试,直接访问正式环境的API

1.1.7 API调用返回成功(ret为0),但是返回的json串无法解析

问题原因:

可能是字符集配置不当而引起。

腾讯公司分配给第三方的机器,默认字符集是UTF-8,qqgame的API默认字符集是GBK。当调用的API返回结果中存在中文或其他非ASC字符时,就可能导致json解析失败。

解决办法:

1.将所分配的机器的字符集,以及链接该机器的终端的字符集,设置为GBK(推荐做法)
2.在调用API时,在请求串里加上charset=utf-8

1.1.8 InviteBox调用成功,但是被邀请者没有收到feed

首先确认什么是feed。

feed是展示在大厅右侧下半部分的邀请信息,含有邀请图片、邀请文字和链接等元素,而非在桌面右下角弹出的tips,所以不能通过观察是否有tips弹出来判断InviteBox是否调用成功。

问题原因:

1.该App没有接入feed功能
2.没有配置invite.conf文件

解决办法:

1.找产品确认该App是否接入了feed功能(对应问题原因1)
2.提供邀请文字和图片链接给产品,产品审核通过后配置到invite.conf(对应问题原因2)

1.1.9 为什么从qqgame进入游戏的时候没有pfkey,在朋友网和qzone进入都有此参数

pfkey是V3版本的支付时所需要的参数,V2版本的支付没有此参数。

目前qqgame已经接入了V3支付,所以用户可以忽略此问题。

1.1.10 若我有多台服务器都需要访问API,每一台均需要申请权限,这样比较麻烦,有没有简单的办法?

可以做反向代理。如使用ngix做个upstream到腾讯的API所在的机器,并申请ngix所在的IP访问API的权限,其他服务器通过此反向代理来调用API。相关链接:

//wiki.open.qq.com/wiki/API3.0%E6%96%87%E6%A1%A3#.E8.AF.B7.E6.B1.82URL.E8.AF.B4.E6.98.8E

1.1.11 我们现在应用域名是s$.app*****.qqopenapp.com, buybox接口要求域名是qqgameapp.com,这有影响吗?

在openwebgame以及qqgameapp域名下调用BuyBox,不会出现跨域问题,放心使用。

1.1.12 我调用了SetSize_New和SetOK,为什么SNS窗体大小不是我预期的?

首先要确认是否是选区游戏。在选区游戏中,必须在游戏接入选区页时设置一系列的分辨率下SNS窗体的大小。对于选区游戏,在游戏内调用SetSize_New是无效的。

对于非选区游戏,在游戏启动时,游戏开发者可以通过SetSize_New设置一系列的分辨率,并调用SetOK使设置生效。

SetSize_New函数中的height和width参数,必须为整数。在调用此函数时,必须确保这两个参数的类型为Number。正确的调用:SetSize_New(10, 1024, 768); 错误的调用:SetSize_New(10, '1024', '768');在JS中并没有强制数据类型,因此即使height和width不为Number类型,调用也不会失败,但是此参数通过com传递给C接口时,会被自动加上类型信息。C接口判断此类型,若不为整数类型,就会废弃此参数,即该接口调用无效。

各种分辨率下SNS窗体大小,以及游戏启动后SNS窗体大小,详见"QQGame游戏窗体API详解.doc"中的1.13小节。

1.1.13 我调用了SetSize_New、SetTitle等一系列的SNS窗体属性设置函数,为什么没有生效?

在设置了窗体属性之后,必须调用SetOK才能使之生效,否则所有设置均不会生效。

在SNS窗体的启动过程中,只有第一次调用SetOK是有效的,后续的SetOK均无效,即在调用SetOK后,再调用SetSize_New等设置窗体属性的函数,即使再调用SetOK,SNS窗体都不会发生任何改变。

对于选区游戏,在游戏内调用窗体属性设置函数均无效,因为选区页调用了SetOK。

1.1.14 我接入了SNS游戏,为什么我的游戏启动速度很慢?

SNS游戏启动速度慢,主要是从点击游戏到进入游戏主界面的过程中,加载的资源过多造成的。

建议制定一个资源加载策略,在SNS游戏在启动时,尽量少加载资源,最好加载的资源总大小不要超过2M,在进入游戏主界面后,再加载其他必要资源。

1.1.15 使用PHP-SDK调用openapi的问题

1) SDK提示sig错误,但是openapi返回成功?

注意:PHP-SDK中api函数的method参数,需要用小写的"get"或者"post",不能使用"GET"或者"POST"。

2) SDK返回ret=2003错误,但是openapi返回成功?

Php的json_decode方法只能对utf-8编码的json字符串进行解码。调用openapi时,需将charset字段设置为 utf-8。

1.1.16 获取qqgame配置信息失败”的问题

游戏启动时出现如下错误提示,该如何处理?

此错误一般出现在选区选服的游戏中,错误原因是开放商有部分数据没有配置造成。需要开发商在渠道管理模块中进行如下配置:

1.1.17 我调用SetTab或者在选区选服页面上为SNS窗体新增了tab页签,为什么无效?

若调用的SetTab系列函数,则请校验各个参数是否正确有效。

若是在选区选服页上设置,则请在页面上依次设置各个tab页参数,不要有间断,例如设置第一、第二和第四个tab也,而跳过第三个tab页。此外,若不希望在tab页上设置图标,则可指定一个无效的图标名称,例如“abc”;因为2012大厅有个bug,在展现tab页签时,发现图标名称为空,就不执行添加操作。