cocosCreator微信小游戏 之 登录流程(三)

2023-12-28 13:59

本文主要是介绍cocosCreator微信小游戏 之 登录流程(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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);
}

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

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

这篇关于cocosCreator微信小游戏 之 登录流程(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/546189

相关文章

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

Oracle登录时忘记用户名或密码该如何解决

《Oracle登录时忘记用户名或密码该如何解决》:本文主要介绍如何在Oracle12c中忘记用户名和密码时找回或重置用户账户信息,文中通过代码介绍的非常详细,对同样遇到这个问题的同学具有一定的参... 目录一、忘记账户:二、忘记密码:三、详细情况情况 1:1.1. 登录到数据库1.2. 查看当前用户信息1.

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo