微信小程序的登录流程——代码详解

这篇具有很好参考价值的文章主要介绍了微信小程序的登录流程——代码详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

小程序登录流程图(具体详情可看官网链接):
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。
微信小程序的登录流程——代码详解

前端开发者需要做的任务是从小程序到开发者服务器这一条线路的工作。
开发者服务器到微信接口服务是后台人员的解密拿openid和session_key的工作。

1、登录流程解析
首次登录:

1、首先需要调用小程序api接口 wx.login() 获取 临时登录凭证code ,这个code是有过期时间的。
2、将这个code回传到开发者服务器(就是请求开发者服务器的登录接口,通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)等)。
3、拿到开发者服务器传回来的会话密钥(session_key)之后,前端要保存wx.setStorageSync('sessionKey', 'value')

再次登录的时候,就要判断存储的session_key是否过期了:
1、获取缓存中的session_key,wx.getStorageSync('sessionKey')
2、如果缓存中存在session_key,那么调用小程序api接口wx.checkSession()来判断登录态是否过期,回调成功说明当前 session_key 未过期,回调失败说明 session_key 已过期。登录态过期后前端需要再调用 wx.login()获取新的用户的code,然后再向开发者服务器发起登录请求。
3、一般在项目开发,开发者服务器也会对用户的登录态做过期限制,所以这时在判断完微信服务器中登录态如果没有过期之后还要判断开发者服务器的登录态是否过期。(请求开发者服务器给定的接口进行请求判断就好)。
4、无论是微信服务器过期了还是开发者服务器登录态过期了,都要像首次登录那样开始三步骤。所以注意封装代码。

wx.checkSession()详情了解:
https://developers.weixin.qq.com/miniprogram/dev/api/wx.checkSession.html

2、代码封装解析
通过上面的文字解析,我们把登录流程进行封装:

 

/**
* 用户相关服务 登陆,检查登录态
*/
const api = require('api.js');  // 这里是本人对统一接口地址封装
import {
HTTP
} from 'http.js'  // 这个是本人对wx.request()这个api进行了封装

// 一般都把登录代码封装为一个类,然后export 类出去。当多个组件使用到的时候就继承这个类就可以使用登录接口了。
class USER extends HTTP {  

/**
* Promise封装登录接口
* 判断本地缓存是否有sessionKey
* 有的情况下判断它是否过期
* **如果微信服务器没过期,继续从开发者服务器校验是否过期
* ****如果没过期,跳过登录,过期则调用登录接口
* **如果微信服务器登录态过期,则调用登录接口
* 没有则说明无登录态,调用登录接口
*/
login() {
return new Promise((resolve, reject) => {
	let sessionKey = wx.getStorageSync('sessionKey')
	if (sessionKey) {
		console.log('sessionKey不为空')
		this._checkWXSession() //检查用户的登录态在微信服务端是否过期
		.then(() => {
			console.log('微信后台未过期>>>开始检测开发者服务器登录态')
			return this._checkSerSession() // 检查用户登录态在开发者服务器端是否过期
		}).then(res => {
			console.log('sessionKey校验通过')
			resolve()
		})
		.catch((res) => {
			console.log('sessionKey校验未通过,过期了')
			this._wxLogin().then(res => {
				console.log(res)
				return this._serLogin(res.code)
			}).then(() => {
				resolve()
			})
		})
	} else {
		console.log('sessionKey为空,先微信服务器登录,再进行开发者服务器登录')
		this._wxLogin().then(res => {
			console.log(res)
			return this._serLogin(res.code)
		}).then(() => {
			resolve()
		})
	}
})
}

检查微信服务器登录态是否过期的代码封装:

/**
* Promise封装wx.checkSession(),检查微信服务器登录态是否过期
*/
_checkWXSession() {
	return new Promise((resolve, reject) => {
		wx.checkSession({
			success: () => {
				resolve(true)
			},
			fail: () => {
				reject(false)
			}
		})
	})
}

检查开发者服务器登录态的代码封装:

/**
* Promise封装开发者服务器sessionKey,检查开发者服务器登录态
*/
_checkSerSession() {
	return new Promise((resolve, reject) => {
		this.request({
			url: api.checkSession,
			header: {
			sessionKey: wx.getStorageSync('sessionKey')
			},
			method: 'POST'
			})
		.then(res => {
			resolve(res);
		})
		.catch(res => {
			reject(res)
			console.log('后台登录态过期')
		})
	})
}

wx.login()微信登录接口api的封装

/**
* Promise封装wx.login
*/
_wxLogin() {
	return new Promise((resolve, reject) => {
		wx.login({
			success: (res) => {
				if (res.code) {
					resolve(res);
				} 
				else {
					reject(res);
				}
			},
			fail: (err) => {
				reject(err);
			}
		})
	})
}

开发者服务器请求接口登录的封装文章来源地址https://www.toymoban.com/news/detail-492416.html

/**
* Promise封装开发者服务器登陆(获取登录后的sessionKey)
*/
_serLogin(code) {
	return new Promise((resolve, reject) => {
		this.request({
			url: api.login,
			data: {
			code: code
			},
			method: 'post'
			})
		.then(res => {
			wx.setStorageSync('sessionKey', res.data)
			console.log('登录成功的回调')
			resolve()
			})
		.catch(err => {
			this._show_error('开发者服务器登录失败')  //这个是消息提示框,在请求中封装了,这里简单理解错误弹出消息提示。
		})
	})
}

到了这里,关于微信小程序的登录流程——代码详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序的登录流程

    1.使用完整服务也就是用户登录并且允许获取头像和昵称的时候,微信小程序通过方法wx.login获取到code(5 分钟内有效),携带code、appid和appSecret发送请求到服务器端; 2.服务器端利用appId、appSecret 和code调用相对应的接口(auth.code2Session)发送请求到微信官方服务器进行校验,

    2024年02月09日
    浏览(49)
  • 微信小程序授权登录流程

    我是IT果果日记,微信公众号请搜索 IT果果日记 一个普通的技术宅,定期分享技术文章,欢迎点赞、关注和转发,请多关照。 首先, 我们要了解什么是微信小程序登录?它的作用是什么? 微信小程序登录是为了让开发者的服务器获取用户的openId以及session_key的令牌。 请不要

    2024年02月14日
    浏览(61)
  • 微信小程序的微信登录流程

    目录 1、登录流程 2、wx.login 3、auth.code2Session 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎Python人工智能开发和前端开发。 🦅主页:@逐梦苍穹 🍔所属专栏:前端 📕您的一键三连,是我

    2024年02月22日
    浏览(51)
  • 【微信小程序】授权登录流程解析

      目录 微信授权登录流程 1. 官方图示流程详解 2. 代码登录流程拆解 2.1 前端代码示例讲解 2.2 后端代码示例讲解 2.3 代码登录流程拆解 🌟 3. 表情包存储展示(扩展) 附议  ① 微信服务器验证: 当用户打开小程序时,小程序会向用户展示登录按钮,用户点击登录按钮后,小

    2024年02月08日
    浏览(44)
  • 微信小程序登录流程与实现

    在了解小程序登录之前,请大家先了解小程序的全局实例和全局组件,以方便理解本文的后续内容,已经了解的可以直接开始。 全局实例和全局组件( 👈 点击直达) 微信小程序的登录流程 微信小程序的登录 首先需要写一个微信小程序的登录弹窗,登录弹窗的作用就是发起

    2024年02月16日
    浏览(44)
  • 说说微信小程序的登录流程?

    传统的 web 开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录 服务端校验用户信息通过之后,下发一个代表登录态的 token 给客户端,以便进行后续的交互,每当 token 过期,用户都需要重新登录 而在微信小程序中,可以通过微信官方提供的

    2024年02月20日
    浏览(46)
  • 微信小程序三种授权登录以及授权登录流程讲解

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《 微信小程序开发实战 》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你

    2024年02月08日
    浏览(52)
  • 微信小程序&会议OA-登录获取手机号流程&登录-小程序&导入微信小程序SDK(从微信小程序和会议OA登录获取手机号到登录小程序导入微信小程序SDK)

    目录 获取用户昵称头像和昵称 wx.getUserProfile bindgetuserinfo 登录过程 登录-小程序 wx.checkSession wx.login wx.request 后台 准备数据表 反向生成工具生成 准备封装前端传过来的数据 小程序服器配置 导入微信小程序SDK application.yml WxProperties WxConfig WxAuthController 登录-小程序 login.js user.j

    2024年02月04日
    浏览(53)
  • mpVue 微信小程序授权登录流程(即登录鉴权流程)及获取手机号一键登录教程(getPhoneNumber使用)

    微信小程序登录 鉴权流程 如下: 因 wx.getUserProfile 与 wx.getUserInfo 接口被收回了,都不能弹出授权窗口,只能使用头像昵称填写能力去获取微信用户信息。 在鉴权页面如下操作 : 1、在 onShow 中调用微信登录 wx.login 获取到唯一的code(用来获取 openid ); 2、根据 wx.login 获取的c

    2024年02月12日
    浏览(68)
  • 微信小程序 之 微信登录(详解)

    微信登录:小程序登录 | 微信开放文档   步骤分析: 之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。 小程序端,调用wx.login()获取code,就是授权码。 小程序端,调用wx.request()发送请求并携带code,请求开发者服务器

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包