微信小程序实现微信登录
小程序登录
小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。
登录流程时序
说明: 调用 wx.login() 获取 临时登录凭证 code ,并回传到开发者服务器。调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key。之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。 注意:会话密钥 session_key 是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥。临时登录凭证 code 只能使用一次
小程序登录态
对于小程序来说,也需要一个唯一的标识符来区分用户,也就是session来保持会话,但是小程序没有cookie, 因此我们的唯一标识符会被存储在 localstorage 里面,每次发请求时,都会从localStorage 里面拿到这个唯一标识符,带在请求中。
微信的openid和code
在日常开发中,我们也经常听到 openid 和 code 的概念。
openid 用来标识这个唯一的微信用户,也就是说,一个微信用户相对于一个公众号(主体)的 openid 是唯一的,是不会变的。
那么我们如何才能知道 某一个用户的 openid 呢?
就是通过 code, 对于同一个用户,每次获取到的 code 都会改变,有有效期。我们把 code 作为参数,调用指定的微信服务器的接口,就可以拿到用户的 openid 。
那么我们如何才能拿到 code 呢?
- 微信内h5页面的方法是:跳到指定的微信的承接页面,再跳回到本页面,url链接上就会被拼上 code 。
- 小程序的方法是: 通过调用 wx.login() 方法,就可以拿到用户的 code
微信小程序登录体系
- 通过 wx.login() 获取到用户的code
- 通过 wx.request() 方法请求我们自己的后端,我们自己的服务端把 appid , appsecret 和 code 一起发送到微信服务器。 appid 和 appsecret 都是微信提供的,可以在管理员后台找到
- 微信服务器返回了 openid
- 我们在自己的数据库中,查找 openid ,如果没有查到记录,说明该用户没有注册,如果有记录,则继续往下走
- 我们生成一个第三方 session , 也就是 session_id , 也就是用户唯一标识符。在 redis 中,把 session_id 和用户的身份存进去。
- 返回 3rd_session
- 小程序把 3rd_session 存到 storage 里面
- 下次请求时,先从 storage 里面读取,然后带给服务端
- 服务端从 redis 里面找到 3rd_session 对应的记录,然后校验有效期
微信小程序实现微信登录相关推荐
- 微信小程序如何进行登录授权和获取用户信息
微信小程序如何进行登录授权和获取用户信息
- 微信小程序之授权登录--项目需要
1.由于项目需要,需要实现自己的微信小程序 用微信授权登录. 2.参考此项目https://blog.csdn.net/weidong_y/article/details/79636386 3.其中的 ...
- 微信小程token_微信小程序开发之登录换取token
本文将带你了解微信小程序开发之登录换取token,希望本文对大家学微信有所帮助 前言:这次主要是介绍些业务逻辑,技术点倒是没有多少.不过在开发中,优秀的编程思路同样是非常值得学习的. 最近小程序可以说 ...
- 小程序登录本地服务器,微信小程序实现用户登录模块服务器搭建
我选用的是node.js来搭建服务器,没有安装的小伙伴可以参考我的node.js其他博客. 服务器安装与配置 初始化项目,将会自动创建package.json配置文件. npm init -y 安装E ...
- 微信小程序获取手机号登录流程
微信小程序获取手机号登录流程 首先前端使用wx.login 获取code wx.login({success(res) {if (res.code) {that.setData({code: res. ...
- 微信小程序的详细登录(上)
前段时间发布了一个微信小程序的简单登录,那段时间我一直在忙着项目,有一天,我清闲下来准备进入小程序群里面看一下来着,刚好有人问问题了,我一看这哥们的问题好像是我写的东西啊,我感觉是时候秀一波了,是时候 ...
- 微信小程序的安全登录
一.微信小程序的安全登录 让用户登录,标识用户和获取用户信息,以用户为核心提供服务,是大部分小程序都会做的事情.我们今天就来了解下在小程序中,如何做用户登录,以及如何去维护这个登录后的会话(Sessi ...
- 微信小程序 如何保持登录状态
问题 由于wx.request()发起的每次请求对于服务器来说都是不同的会话(wx.request()请求是先经过微信服务器再到达我们的服务器),这样会导致后续请求都相当于未登录的状态. 解决方案 将 ...
- 微信小程序之授权登录
微信小程序之授权登录 之前微信授权登录时是直接可以通过getUserInfo接口 弹出授权弹窗.由于微信官方修改了 getUserInfo 接口,所以现在无法实现一进入微信小程序就弹出授权窗口,只能通 ...
- 微信小程序获取手机号登录流程(个人开发者账号不支持)
微信小程序获取手机号登录流程 所需条件 1. 非个人开发者账号 2. AppID+AppSecret 流程思路 **注意:** 代码实现 常见问题 所需条件 1. 非个人开发者账号 获取手机号文档 这 ...
最新文章
- pycharm 使用小结
- FPGA技术的未来发展:谁与AI平分秋色
- 深度学习入门指北——从硬件到软件
- 什么叫大地高_等电位箱有什么用?
- Spring_Boot 简单例子
- python处理数据的优势-Python处理excel的优点
- Ext中namespace的作用
- 史上最全的JFinal源码分析(不间断更新)
- koa2 mysql_koa2+vue+mysql 全栈开发记录
- Hexo文章图片存储选七牛(当然支持MD都可以)
- 不清楚SBUS,这份SBUS协议详解请收藏
- 【HTML】【简易电子相册】overflow:hidden;
- 人工智能(一):技术发展史
- 网络虚拟化之虚拟交换机技术Linux Bridge
- Java程序员辛勤工作7年被裁,背后的思考与总结
- 关于Nginx服务器的一些粗略认识
- 计算机专业不用学数学的有什么,大学里不用学数学的专业,不想学高数的看过来,你的专业是哪个...
- Linux MMC原理及框架详解
- linux c 程序异常退出时打印堆栈调用信息
- SpringCloud Hystrix熔断器