cocos + KBEngine 微信小游戏 - 微信登陆

2024-01-21 08:48

本文主要是介绍cocos + KBEngine 微信小游戏 - 微信登陆,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        由于微信小游戏没有提供服务端获取微信用户详细信息的接口,所以小游戏的微信登陆,用户信息要依赖客户端获取并上报到服务端,服务端为了数据正确性,需要对客户端上报的信息进行合法性校验。整个流程为:

 1.授权(wx.authorize):客户端首先获得查询用户信息的权限。

 2.拿到用户信息(wx.getUserInfo):客户端通过微信服务获得用户信息(userInfo),我们这里用到的用户信息包括:用户详细信息userInfo['userInfo'],不包括敏感信息的原始数据字符串userInfo['rawData'],使用 sha1( rawData + sessionkey ) 得到字符串userInfo['signature']。

 3.微信登陆(wx.login):客户端向微信服务获得登陆凭证(code)。

3.游戏登陆:客户端拿用户信息(userInfo)和登陆凭证(code)向服务端发起登陆

4.服务端登陆(auth.code2Session):服务端首先通过登陆凭证(code)向微信服务获的用户的唯一标识(openid)及本次登录的会话密钥(session_key)。

5.服务端校验:对 userInfo['rawData']  + session_key 使用sha1算法得到加密后的key,对比key与userInfo['signature']是否相同判定数据正确性

6.服务端使用客户端上传的用户详细信息创建游戏角色

微信小程序开发文档  https://developers.weixin.qq.com/minigame/dev/guide/

 

7.补充:

我的玩家信息(userInfo)是用登陆中的clientData参数传输的,而由于玩家信息(userInfo )中存在中文导致玩家信息校验失败,原因是js插件中writeBlob 对中文的支持不完善,导致与服务器通讯过程中,中文信息传输错误。,所以对插件做如下修改

1.修改调用位置
// bundle.writeBlob(KBEngine.app.clientdatas);
bundle.writeClientData(KBEngine.app.clientdatas);2.KBEngine.Bundle 增加writeClientData函数this.writeClientData = function(v){var s = KBEngine.stringToUTF8Bytes(v);this.checkStream(s.length + 4);this.stream.writeBlob(s);}

 

这篇关于cocos + KBEngine 微信小游戏 - 微信登陆的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/628978

相关文章

oracle如何连接登陆SYS账号

《oracle如何连接登陆SYS账号》在Navicat12中连接Oracle11g的SYS用户时,如果设置了新密码但连接失败,可能是因为需要以SYSDBA或SYSOPER角色连接,解决方法是确保在连接... 目录oracle连接登陆NmOtMSYS账号工具问题解决SYS用户总结oracle连接登陆SYS账号

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

Debugging Lua Project created in Cocos Code IDE creates “Waiting for debugger to connect” in Win-7

转自 I Installed Cocos Code IDE and created a new Lua Project. When Debugging the Project(F11) the game window pops up and gives me the message waiting for debugger to connect and then freezes. Also a

Android的登陆MD5加密

1:导入代码 public class MD5Util {private static final String TAG = "MD5Util";/**** MD5加码 生成32位md5码*/public static String string2MD5(String inStr) {Log.e(TAG, "string2MD5: -------------------------");Mess

基于微信小程序与嵌入式系统的智能小车开发(详细流程)

一、项目概述 本项目旨在开发一款智能小车,结合微信小程序与嵌入式系统,提供实时图像处理与控制功能。用户可以通过微信小程序远程操控小车,并实时接收摄像头采集的图像。该项目解决了传统遥控小车在图像反馈和控制延迟方面的问题,提升了小车的智能化水平,适用于教育、科研和娱乐等多个领域。 二、系统架构 1. 系统架构设计 本项目的系统架构主要分为以下几个部分: 微信小程序:负责用户界面、控制指令的

微信小程序uniappvue3版本-控制tabbar某一个的显示与隐藏

1. 首先在pages.json中配置tabbar信息 2. 在代码根目录下添加 tabBar 代码文件 直接把微信小程序文档里面的四个文件复制到自己项目中就可以了   3. 根据自己的需求更改index.js文件 首先我这里需要判断什么时候隐藏某一个元素,需要引入接口 然后在切换tabbar时,改变tabbar当前点击的元素 import getList from '../

微信小程序(一)数据流与数据绑定

一、单向数据流和双向数据流 1、单项数据流:指的是我们先把模板写好,然后把模板和数据(数据可能来自后台)整合到一起形成HTML代码,然后把这段HTML代码插入到文档流里面 优点:数据跟踪方便,流向单一,追寻问题比较方便【主要体现:微信小程序】。 缺点:就是写起来不太方便,如果修改UI界面数据需要维护对应的model对象 2、双向数据流:值和UI是双向绑定的,大家都知道,只要UI里面的值发生

微信小程序学习网站

小程序--柯神博客 http://www.cnblogs.com/nosqlcoco 案例地址: https://github.com/cocoli/weixin_smallexe/tree/master/weixin_demo/pages/component/uploadfile

分享一个基于uniapp科技馆服务微信小程序 博物馆管理小程序(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流! 💕💕学习资料、程序开发、技术解答、文档报告 💕💕如需要源码,可以扫取文章下方二维码联系咨询 💕💕Java项目 💕💕微信小程序项目 💕💕Android项目 �