常见问题
修订记录
2018-09-19:初稿完成。
FAQ
请求openapi返回"Param gameid error!"怎么解决?
- 检查发起请求的方法是否为POST
- 只能使用POST方法发起请求
- 检查发起请求的Content-Type头域
- 必须携带Content-Type头域,并且取值为application/x-www-form-urlencoded
检查发起请求的参数是否为application/x-www-form-urlencoded格式并正确携带
检查请求的域名环境,只有提交了正式上线申请,审批通过,并版本状态为已经上线的游戏才可以请求正式环境;解决方式为请求测试环境域名,或上线游戏
检查是否配置了APPKEY,参见自建后台开发指引中,"如何获取APPID和APPKEY"的章节;解决方法为编辑设置一个APPKEY
请求openapi返回"sign fail!"怎么解决?
排除以下常见问题
- 构造源串时注意URI不含host,如/openapi/apollo_verify_openid_openkey,而不应该是http://openapi-test.hudong.qq.com/openapi/apollo_verify_openid_openkey
- 构造源串时,没有将key排序后,再将(key=value)用&拼接起来
- 构造密钥时,没有将appkey后加“&”
- 某些语言的URLEncode系统方法在进行URL编码时,并没有按照现行的URL编码规则进行。
- 签名验证时,要求对字符串中除了“-”、“_”、“.”之外的所有非字母数字字符都替换成百分号(%)后跟两位十六进制数。十六进制数中字母必须为大写。
- 某些语言的urlencode方法会把“空格”编码为“+”,实际上应该编码为“%2B”。这也将生成错误的签名,导致签名通不过验证。
- 注意sha1的输出,必须是二进制格式;以php为例,hash_hmac的最后一个参数必须为true
按照算法说明里面的代码样例排查原因,使用签名检查工具逐步检查
请求openapi返回"Uin/Skey auth fail!"怎么解决?
检查请求的openid和openkey参数是否为空
- 检查请求的openid和openkey参数是否缓存了较长时间,应使用引擎中获取的openid和openkey
- 检查请求的appid是否是游戏对应的appid,参见自建后台开发指引中,"如何获取APPID和APPKEY"的章节确认appid
原文: https://hudong.qq.com/docs/engine/server/thrid/api_doc/faq.html