cocosCreator微信小游戏 之 登录流程(三)-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

creator版本 3.8.0

语言 TypeScript

环境 Mac


流程

微信小游戏在微信平台中运行第一步操作就是登录。在登录之后才能

  • 更方便的获取微信提供的用户身份标识
  • 更方便的验证数据传递的合法性

在微信平台中登录的流程图大致如下

Client Server 微信后台 wx.login获取code登录凭证 loop wx.request发送code auth.code2Session登录凭证校验 appId+appsecret+code 返回openId, session_key, unionId等 自定义登录态 保存openId,session_key等 loop 返回登录状态(成功、失败) wx.request发送业务请求 session_key加密算法 数据合法性 loop 返回业务数据 Client Server 微信后台

步骤

  1. 客户端调用 wx.login 接口获取 临时登录凭证code(时效5分钟)
  2. 客户端调用 wx.request 接口将 code 发送给服务器
  3. 服务器调用 auth.code2Session 接口 通过请求参数 appId+appSecret+code 向微信后台请求
  4. 微信后台将 openId + session_key + unionId 反馈给服务器 服务器可将这些数据进行存储
  5. 服务器可通过 auto.checkSessionKey 接口验证 session_key 的合法性
  6. 服务器告知客户端登录状态
  7. 登录成功状态下客户端可通过wx.request向服务器请求其他数据
  8. 服务器通过session_key进行数据合法性验证或其他处理后将数据返回给客户端

appId和appSecret


微信小程序的唯一的ID和唯一的密钥在微信后台处通过开发管理 -> 开发设置可获取
请添加图片描述

出于安全考虑appId和AppSecret 都需要保密


auth.code2Session


该接口主要被服务器进行登录凭证校验。 返回的参数

参数类型说明
openIdstring用户唯一标识符业务逻辑请求需要
session_keystring密钥服务器用于验证数据的合法性客户端不需要
unionidstring用户在开放平台的唯一标识符
errcodenumber错误码0表示成功
errmsgstring错误信息

errcode的类型主要有

数值说明
-1系统繁忙此时请开发者稍候再试
0请求成功
40029code无效
45011频率限制每个用户每分钟100次
40226高风险等级用户小程序登录拦截 。风险等级详见用户安全解方案

session_key字段主要在服务器中使用以wx.getUserInfo为例接口返回的字段

  • rawData 不包括敏感信息的原始数据字符串用于计算签名
  • signature 使用 sha1( rawData + sessionkey ) 得到字符串用于校验用户信息
  • encryptedData 包括敏感数据在内的完整用户信息的加密数据
  • iv 加密算法的初始向量

客户端可以将 rawDatasignature 字段发送给服务器然后服务器通过相同的算法加密获取新的 signature, 两者比对就可以检验数据的合法性了。

示例


因能力限制最后粘贴下客户端的逻辑实现相关

  • cocosCreator的登录页面增加登录按钮
  • 脚本中逻辑处理实现
public clickLogin(callBack?: any) {
  const wx = window['wx'];
  let object: any = {
    timeout: 10000,         // 超时时间毫秒
    success: (res) => {
      // 用户登录凭证有效期5分钟
      let code = res.code;        
      console.log("登录获取凭证成功, code:", code);
      if (callBack) {
        callBack(code);
      }
    },
    fail: (err) => {
      console.log(`wx.login 失败, errorCode:${err.errno}, msg:${err.errMsg}`)
    },
  };
  wx.login(object);
}

更多内容参考微信小游戏-登录态管理

最后祝大家学习生活愉快!

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6