当前位置:首页 > JavaScript > 微信小程序之微信登陆-——-微信小程序教程系列(20)

微信小程序之微信登陆-——-微信小程序教程系列(20)

一叶知秋2024-04-06 05:46:40JavaScript6

我们先看看微信登陆的序时图:

序时图所示,通过wx.login()获取了code后,就使用wx.request()发送code给第三方服务器(也就是自家的服务器)

下面用代码来进行讲解这一步如何操作

示例:官方示例

把wx.login获取到的res.code返回值,直接以参数的形式,发起网络请求发送登陆态给自家服务器

js:

//调用登录

wx.login({

success: function(res) {

console.log(res);

if (res.code) {

//就是在这里发起网络请求,使用wx.request(),将登陆态发送给自家的服务器上

wx.request({

url: ‘https://test.com/onLogin’,

data: {

code: res.code

},

method: ‘POST’,

header: {‘content-type’: ‘application/json’},

success: function(data){

}

})

} else {

console.log(‘获取用户登录态失败!’ + res.errMsg)

}

},

fail: function(){

console.log(“启用wx.login函数,失败!”);

},

complete:function(){

console.log(“已启用wx.login函数”);

}

});

如何使用微信小程序发起网络请求?

请看如下教程:微信小程序的网络请求 ——微信小程序教程系列(14)

第三步:code 换取 session_key和openid

登陆态发送给自家的服务器后,接下来就是后台进行操作。

下面我把 自家的服务器简称 后台,方便阅读(你知道我说的后台指的是我们自己的服务器,而不是微信的服务器就行)。

后台接收到登陆态后,由后台发起网络请求给微信服务器

备注:后台没有语言要求!!任意一门后台语言都可以。

接口地址:

https://api.weixin.qq.com/sns/jscode2session

参数说明:

备注:

appid和secret登陆微信公众平台,打开设置——开发设置,即可获取(app secret需要生成)。

grant_type是固定写法,值为authorization_code即可。

返回结果:

后台发送请求成后,腾讯服务器会返回session_key 和 openid,如下图:

成功返回的结果

失败返回的结果

第四步:生成3rd_session返回给客户端

第四步也是做后台中的操作!!

此时把微信服务器返回的session_key 和 openid保留在后台中,由于考虑安全性的问题,不要直接返回给客户端。

然后用操作系统提供的随机数算法生成一个新的session,微信把它叫做3rd_session。(注意:这个session要有足够的长度,建议有2^128种组合,即长度为16B;设置一定的时效性)

以3rd_session为名作为key,返回的session_key和openid作为值,保存在后台上。

最后只需要在后台,返回一个3rd_session给客户端即可。

以后客户端部分,就使用这个3rd_session发送给后台,后台接收3rd_session获取对应的session_key和openid,再通过session_key和openid判断对应的用户返回该用户相关的数据

备注:小程序用这种方法来代替浏览器自身发送的cookie,因为web的做法是服务器A会保存起访问登录接口的这个cookie到session中,当你再次访问其他接口的时候,服务器A首先会判断这个session,是否是之间的cookie从而知道是不是对应的用户。(http协议是一种短链接的关系,其特点是客户端发起请求链接到服务端,服务端返回数据,链接断开!因此之间是不会有任何数据的储存。)

示例:接上示例

js:

wx.login({

success: function(res) {

console.log(res);

if (res.code) {

wx.request({

url: ‘https://test.com/onLogin’,

data: {

code: res.code

},

method: ‘POST’,

header: {‘content-type’: ‘application/json’},

// 在发送请求成功的部分,返回的数据是后台返回的3rd_session

success: function(data){

console.log(data)

}

})

} else {

console.log(‘获取用户登录态失败!’ + res.errMsg)

}

},

fail: function(){

console.log(“启用wx.login函数,失败!”);

},

complete:function(){

console.log(“已启用wx.login函数”);

}

});

PS:

要是阅读到这里,有不明之处,请叫上后台的小伙伴一起过来阅读这篇文章

第三步,和第四步,要交给后台的同事去处理!!!

第五步:客户端保存3rd_session

回到客户端的工作了。

从第四步后台返回的3rd_session后,需要将3rd_session存入缓存中。

小程序提供了保存到本地缓存的api,使用非常简单。

(1)wx.setStorage(OBJECT)

传入key和data即可。

(2)wx.setStorageSync(KEY,DATA)

第六步:获取用户信息

相关连接:https://mp.weixin.qq.com/debug/wxadoc/dev/api/open.html

示例:接上示例

js:

wx.login({

success: function(res) {

console.log(res);

if (res.code) {

wx.request({

url: ‘https://test.com/onLogin’,

data: {

code: res.code

},

method: ‘POST’,

header: {‘content-type’: ‘application/json’},

success: function(data){

console.log(data)

}

})

// 使用wx.getUserInfo获取用户信息

wx.getUserInfo({

success: function (res) {

utils.log(res);

},

fail:function(){

console.log(“启用app.getUserInfo函数,失败!”);

},

complete:function(){

console.log(“已启用app.getUserInfo函数”);

});

} else {

console.log(‘获取用户登录态失败!’ + res.errMsg)

}

},

fail: function(){

console.log(“启用wx.login函数,失败!”);

},

complete:function(){

console.log(“已启用wx.login函数”);

}

});

输出wx.getUserInfo的success成功回调函数返回值res的内容如下:

userInfo对象内是用户的信息:

avatarUrl: 用户头像

city: 城市

country: 国家

gender: 性别

language: 语言

nickName: 昵称

province: 省份

第七步:登录态维护
通过上面六步,已经成功登陆微信小程序了,但是还需要做登陆维护。

也就是说,登陆小程序后,然后又退出该小程序了。在一段时间内,再次进入该小程序,视为有效登陆,如果超出这个指定的时间,则视为无效登陆,需要重新登陆

原文作者:michael_ouyang
原文链接:https://blog.csdn.net/michael_ouyang/article/details/72635263

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

重要知识点

下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。

高级进阶篇——高级UI,自定义View(部分展示)

UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

  • 面试题部分合集
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

上方技术点整理的一些进阶资料。

[外链图片转存中…(img-6bUEHhTg-1711963633215)]

高级进阶篇——高级UI,自定义View(部分展示)

UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

[外链图片转存中…(img-E6w1xb6D-1711963633215)]

  • 面试题部分合集
    [外链图片转存中…(img-JWJD3XtF-1711963633215)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

扫描二维码推送至手机访问。

版权声明:本站部分文章来自AI创作、互联网收集,请查看免责申明

本文链接:https://www.yyzq.team/post/329670.html

分享给朋友: