# 微信小游戏海外服务端接口开发文档
# 前言
当前文档为微信官方小游戏服务端文档的海外版本。
- 当前微信小游戏海外处于前期测试阶段,将陆续开放更多服务端接口,当前文档不代表最终形态。
- 使用未被文档采纳的服务端接口(即在国内已开放,但海外暂无对应接口),将带来不可预料的后果。如国内确实存在调用此类服务端接口,请评估是否可以避免使用,或将使用的接口和对应用途提交微信小游戏官方开发者。
- univapi.wechat.com 为小游戏海外官方专有服务端接口域名,但部分接口如获取接口调用凭据则仍然使用 api.weixin.qq.com 接入。
# 一、国内接口兼容
当前小游戏海外开发工具并未完善,如果开发者希望在微信开发者工具中开发,小游戏后台需要区分请求的来源来调用不同的微信服务端接口:
- 来自微信开发者工具则继续使用国内文档提供的服务端接口。
- 否则使用本文档提供的服务端接口。 一个可参考的兼容方式: 小游戏前端可以通过 wx.getDeviceInfo().platform === 'devtools' 来判断当前环境是否是微信开发者工具,并在调用游戏服务时据此区分环境,以判断使用国内还是国外的服务端接口。Object wx.getDeviceInfo()
# 二、开放接口
# 1. 接口调用凭证
名称 | 功能说明 |
---|---|
getAccessToken | 获取小程序全局唯一后台接口调用凭据(access_token) |
getStableAccessToken | 获取小程序全局唯一后台稳定版接口调用凭据(access_token) |
# 1.1 getAccessToken 获取接口调用凭证
沿用国内,见获取接口调用凭证
# 1.2 getStableAccessToken 获取稳定版接口调用凭证
沿用国内,见获取稳定版接口调用凭证
# 2. 登录
名称 | 功能说明 |
---|---|
checkSessionKey | 校验服务器所保存的登录态 session_key 是否合法 |
code2Session | 登录凭证校验 |
resetUserSessionKey | 重置指定的登录态 session_key |
# 2.1 checkSessionKey 校验登录态
校验服务器所保存的登录态 session_key 是否合法。为了保持 session_key 私密性,接口不明文传输 session_key,而是通过校验登录态签名完成。
# 请求地址
GET
https://univapi.wechat.com/wxa/checksession?access_token=ACCESS_TOKEN&signature=SIGNATURE&openid=OPENID&sig_method=SIG_METHOD
# 请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
access_token/cloudbase_access_token | string | 是 | 详见表格下方链接1 | |
openid | string | 是 | 用户唯一标识符 | |
signature | string | 是 | 详见表格下方链接2 | |
sig_method | string | 是 | 用户登录态签名的哈希方法,目前只支持 hmac_sha256 |
# 返回值
# Object
返回的JSON 数据包
属性 | 类型 |
---|---|
errcode | number |
errmsg | string |
# errcode 的合法值
值 | 说明 |
---|---|
0 | ok请求成功 |
87009 | invalid signature 签名错误 |
# 调用示例
curl -G
'https://univapi.wechat.com/wxa/checksession?access_token=OsAoOMw4niuuVbfSxxxxxxxxxxxxxxxxxxx&signature=fefce01bfba4670c85b228e6ca2b493c90971e7c442f54fc448662eb7cd72509&openid=oGZUI0egBJY1zhBYw2KhdUfwVJJE&sig_method=hmac_sha256'
# 返回示例
正确时返回的JSON数据包如下:
{
"errcode": 0,
"errmsg": "ok"
}
错误时返回的JSON数据包如下:
{
"errcode": 87009,
"errmsg": "invalid_signature"
}
# 2.2 code2Session 登录凭证校验
登录凭证校验。通过wx.login(Object object)接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。
更多使用方法详见
小程序登录开放文档
# 请求地址
GET
https://univapi.wechat.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
# 请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
appid | string | 是 | 小程序 appid | |
secret | string | 是 | 小程序 appSecret | |
js_code | string | 是 | 登录时获取的 code | |
grant_type | string | 是 | 授权类型,此处只需填写 authorization_code |
# 返回值
# Object
返回的JSON 数据包
属性 | 类型 | 说明 |
---|---|---|
openid | string | 用户唯一标识 |
session_key | string | 会话密钥 |
unionid | string | 用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台账号下会返回,详见链接3 |
errcode | number | 错误码 |
errmsg | string | 错误信息 |
# errcode 的合法值
值 | 说明 |
---|---|
-1 | 系统繁忙,请开发者稍后再试 |
0 | ok请求成功 |
40029 | code 无效 |
45011 | 频率限制,每个用户每分钟最多发起 100 次请求 |
40226 | 高风险等级用户,小程序登录拦截。风险等级详见链接4 |
# 2.3 resetUserSessionKey 重置登录态
# 接口说明
重置指定的登录态 session_key。为了保持 session_key 私密性,接口不明文传入 session_key,而是通过校验登录态签名完成。
# 请求地址
GET
https://univapi.wechat.com/wxa/resetusersessionkey?access_token=ACCESS_TOKEN
# 请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
access_token | string | 是 | 接口调用凭证,该参数为 URL 参数,非 Body 参数。详见链接6 | |
openid | string | 是 | 用户唯一标识符 | |
signature | string | 是 | 详见表格下方链接6 | |
sig_method | string | 是 | 用户登录态签名的哈希方法,目前只支持 hmac_sha256 |
# 返回值
返回的JSON 数据包
属性 | 类型 | 说明 |
---|---|---|
errcode | number | 错误码 |
errmsg | string | 错误信息 |
openid | string | 用户唯一标识符 |
session_key | string | 重置后的用户登录态 |
# 其他说明
- 重置用户session_key后,原有的session_key会失效。请注意接口调用时机,以免影响用户在小程序中的体验。
- 重置后的session_key会继承原有的session_key的过期时间,重置操作不能为session_key续期。
- 单个小程序appid请求量频率限制为 60000 次 / 分钟。
- 不允许频繁重置同一个用户的登录态
# 调用示例
示例说明: resetUserSessionKey 请求示例
# 请求数据示例
GET
https://univapi.wechat.com/wxa/resetusersessionkey?access_token=ACCESS_TOKEN&openid=OPENID&signature=SIGNATURE&sig_method=hmac_sha256
# 返回数据示例
{
"errcode": 0,
"errmsg": "ok",
"openid": "xxxxxxx",
"session_key": "xxxxxxx"
}
# 错误码
错误码 | 错误描述 |
---|---|
45011 | api minute-quota reach limit mustslower retry next minute |
87008 | invalid sig_method |
87007 | session_key is not existd or expired |
-1 | system error |
87009 | invalid signature |
40097 | invalid args |