# 小游戏登录指南

快手为小游戏开发者提供了一系列接口,方便开发者快速获取用户身份标识,建立小游戏内的账号体系。

# 名词解释

登录流程中涉及的相关名词解释如下:

名词 解释 获取方式 有效期
app_id 小游戏唯一标识 从快手开放平台获取 不变
app_secret 小游戏密钥 从快手开放平台获取 不变
code 临时登录凭证 小游戏前端调用 ks.login 获取 只能使用一次
open_id 用户唯一身份标识 小游戏服务器从快手服务器获取 单个小游戏内不变
session_key 会话密钥 小游戏服务器从快手服务器获取,用于后续接口签名和校验数据完整性使用 由快手服务器维护,与用户使用该小游戏频率有关,使用越频繁有效期越长
自定义登录态 小游戏登录态,区别于快手登录态 小游戏服务器自己定义生成,与 open_id 关联

# 时序图

登录流程时序图如下:

img

# 说明

  1. 小游戏服务器应妥善保管 session_key,勿将该字段下发至小游戏前端,避免会话密钥泄露,保证数据安全;此外小游戏前端调用 ks.login 接口会导致 session_key 被刷新,存储在小游戏服务端的旧 session_key 失效,所以前端应谨慎判断调用 ks.login 的时机;
  2. 每个快手用户在单个小游戏内 open_id 始终不变,小游戏服务器可据此生成自定义登录态,用于后续业务中前后端交互时识别用户身份;
  3. 临时登录凭证 code 仅单次有效,且有有效期限制,小游戏服务器收到后应及时调用登录凭证校验接口 auth.code2session 换取 open_id 和 session_key 。
  4. ks.login 的调用时机:在游戏本地存在自定义登录态时,可以直接使用自定义登录态发起业务请求,当自定义登录态失效时才需要重新调用 ks.login ,调用流程伪代码如下:
if (自定义登录态有效){
  发起业务请求 // 携带自定义登录态
} else {
  // 先通过登录流程获取自定义登录态,再发起业务请求
  ks.login({
    success : function(res) {
       通过游戏服务器获取自定义登录态 // 携带 res.code
       发起业务请求 // 携带自定义登录态
    },
    fail : function() {
      //错误处理
    }
  });
}
  1. ks.checkSession 的调用时机:游戏需要使用登录态签名时,需在调用相关接口前确保 ks.checkSession 调用成功,调用流程伪代码如下:
ks.checkSession({
    success: function(){
      // 发起携带登录态签名的请求,比如 ks.getUserInfo
    },
    fail: function(){
      // 错误处理
    }
})

# 客户端接口

# ks.login(Object object)

# ks.checkSession(Object object)

# 服务端接口

# auth.code2Session