阅读(2328) (10)

QQ小游戏 用户登录态签名

2020-07-15 17:35:03 更新

小程序的一部分后台 (HTTPS)接口要求验证用户登录态。开发者在调用时需提供以 session_key 为密钥生成的签名。其中 session_key 是指通过 qq.login 获得的登录态。

签名算法

目前支持的签名算法是 hmac_sha256。 对于POST请求,开发者生成签名的算法是:

signature = hmac\_sha256(post\_data, session_key)

其中 post_data 为本次POST请求的数据包。特别地,对于 GET 请求,post_data 等于长度为 0 的字符串。

signature = hmac\_sha256('', session\_key)

签名示例

例如开发者需要请求的 HTTPS(POST)接口,其中请求包为一个 json 字符串。

curl -d '{"foo":"bar"}' 'https://api.q.qq.com/some_api?access_token=xxx&openid=xxx&signature=???&sig_method=hmac_sha256'

开发者需要计算出 signature 参数。假设用户当前有效的 session_key 为 :

'o0q0otL8aEzpcZL/FT9WsQ=='

则开发者生成签名应该是

` curl -d '{"foo":"bar"}' 'https://api.q.qq.com/some_api?access_token=xxx&openid=xxx&signature=654571f79995b2ce1e149e53c0a33dc39c0a74090db514261454e8dbe432aa0b&sig_method=hmac_sha256'

`

开发者服务器发起的HTTP请求

curl -d '{"foo":"bar"}' 'https://api.q.qq.com/some_api?access_token=xxx&openid=xxx&signature=654571f79995b2ce1e149e53c0a33dc39c0a74090db514261454e8dbe432aa0b&sig_method=hmac_sha256'

session_key 合法性校验

获取用户态签名后,可以调用后台接口来校验 session_key 的合法性