登录
QQ 浏览器小游戏登录流程与微信小游戏类似,具体流程如下图
- 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
- 调用 code2Session 接口,换取 用户唯一标识
qbopenid
和 会话密钥session_key
。
之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份
调用接口获取登录凭证
通过凭证进而换取用户登录态信息,包括用户的唯一标识(qbopenid)及本次登录的会话密钥(session_key)等
wx.login({
success (res) {
if (res.code) {
// 发起网络请求
wx.request({
url: 'https://test.com/onLogin',
data: {
code: res.code
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
临时登录凭证
code
有效期五分钟,开发者需要在开发者服务器后台调用 code2Session,使用code
换取qbopenid
和session_key
等信息
登录凭证校验
通过 wx.login() 接口获得临时登录凭证 code
后传到开发者服务器调用此接口完成登录流程
请求地址
// 正式环境
GET https://api.qbgame.qq.com/jscode2session?appid=<GAMEID>&appsecret=<APPSECRET>&code=<CODE>
// 沙箱环境
GET https://sandbox.api.qbgame.qq.com/jscode2session?appid=<GAMEID>&appsecret=<APPSECRET>&code=<CODE>
请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
appid | string | 是 | 小游戏 ID | |
appsecret | string | 是 | 小游戏 appsecret | |
code | string | 是 | wx.login 获取的 code |
返回值
返回的 JSON 数据包
属性 | 类型 | 说明 |
---|---|---|
qbopenid | string | 用户唯一标识 |
session_key | string | 会话密钥 |
errcode | number | 错误码 |
errmsg | string | 错误信息 |
会话密钥
session_key
是对用户数据进行的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥
检查登录态是否过期
wx.checkSession({
success () {
// session_key 未过期,并且在本生命周期一直有效
},
fail () {
// session_key 已经失效,需要重新执行登录流程
wx.login() //重新登录
}
})
校验服务器所保存的登录态 session_key 是否合法
为了保持 session_key
私密性,接口不明文传输 session_key
,而是通过校验登录态签名完成
请求地址
// 正式环境
GET https://api.qbgame.qq.com/checksession?access_token=<ACCESS_TOKEN>&signature=<SIGNATURE>&openid=<OPENID>&sig_method=<SIG_METHOD>
// 沙箱环境
GET https://sandbox.api.qbgame.qq.com/checksession?access_token=<ACCESS_TOKEN>&signature=<SIGNATURE>&openid=<OPENID>&sig_method=<SIG_METHOD>
请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
access_token | string | 是 | 接口调用凭证 | |
signature | string | 是 | 用户登录态签名 | |
openid | string | 是 | 用户唯一标识符,登录返回的即 qbopenid |
|
sig_method | string | 是 | 用户登录态签名的哈希方法,目前只支持 hmac_sha256 |
返回值
返回的 JSON 数据包
属性 | 类型 | 说明 |
---|---|---|
errcode | number | 错误码 |
errmsg | string | 错误信息 |