微信小程序 登录流程规范解读

一. 官方登录时序图

二. 简单理解

这里仅按照官方推荐的规范来

0. 前置条件

一共有三端:  - 微信小程序客户端  - 第三方服务器端(自己搭建)  - 微信服务器端

1. 客户端获得code,并将code传给第三方服务端

微信小程序端调用wx.login,获取登录凭证(code),并调用接口,将code发送到第三方客户端

2. 第三方服务端用code换session_key和openid

小程序端将code传给第三方服务器端,第三方服务器端调用接口,用code换取session_key和openid

3. 第三方服务端生成新的session(3rd_session)

第三方服务器端拿到请求回来的session_key和openid,先留着,不能给客户端;然后用操作系统提供的真正随机数算法生成一个新的session,叫3rd_session

4. 第三方服务端建立对应关系,并存储

将3rd_session作为key,微信服务端返回的session_key和openid作为值,保存起来

5. 第三方服务端将3rd_session发送到客户端

客户端只拿到3rd_session就够了,大人说话小孩别插嘴,小程序不需要知道session_key和openid

6. 正常请求

小程序每次请求都将3rd_session放在请求头里,第三方服务端解析判断合法性,并进行正常的逻辑处理。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术小站

Spring,@Controller,@RequestMapping, @ResponseBody,@RequestParam

703
来自专栏Java Edge

2018-08-02

hibernate执行更新需要较长时间,因此需要等待,否则无法获得更新后字段

822
来自专栏zhangdd.com

设置Mysql的连接超时参数wait_timeout、interactive_timeout

最近处理一个web服务时,写数据库数据时,经常报“MySQL server has gone away”,一查发现是mysql的wait_timeout、int...

882
来自专栏ml

Spring mvc Controller接口

Spring MVC  1. 继承该接口 Controller接口,重写对应方法,或者采用注解Controller,自定义映射文件 1 @Controller ...

2945
来自专栏前端小叙

koa2实现拦截器进行登录前session校验

在使用koa-passport,koa-session中间件之后,可以进行用户登录的验证,再配合此拦截器,可以实现进入所有页面之前,对是否登录做一个验证,把不需...

1272
来自专栏Java Edge

告知服务器意图的 HTTP 方法1 GET:获取资源2 POST:传输实体主体3 PUT:传输文件4 HEAD:获得报文首部5 DELETE:删除文件6 OPTIONS:询问支持的方法一般网站只用G

26810
来自专栏coder修行路

python爬虫从入门到放弃(二)之爬虫的原理

在上文中我们说了:爬虫就是请求网站并提取数据的自动化程序。其中请求,提取,自动化是爬虫的关键!下面我们分析爬虫的基本流程 爬虫的基本流程 发起请求 通过HTTP...

1959
来自专栏Java成长之路

Spring MVC入门

Spring的Web框架就是为解决在web开发中遇到如一系列问题而设计的。 SpringMVC基于模型-视图-控制器( Model-View-Controlle...

603
来自专栏码农二狗

为nginx日志加入上游响应时间

1114
来自专栏冷冷

微信JS-SDK 注入权限验证配置

wx.config({     debug: true, // 开启调试模式,建议开发时开启     appId: '${appId}',      //注意 ...

1876

扫码关注云+社区