微信小程序 登陆流程详细介绍


Posted in Javascript onJanuary 17, 2017

微信小程序 登陆流程

1:session_key和openId是什么?session_key

官方说明为:

session_key是微信服务器生成的针对用户数据进行加密签名的密钥

session_key的用途

(1)对wx.getUserInfo()接口得到“用户信息中的密文”进行解密。
(2)对它“稍作处理”,用作维护小程序的登录态。

“稍微处理”大体为:

(1)生成一个随机数(官方把他叫做3rd_session)
(2)把这个随机数当session的key,session_key + openid为value。

即:session[3rd_session]=session_key+openid

openIdopenId:用户唯一标识

即:每个微信用户在你的小程序的唯一的标识。

微信小程序 登陆流程详细介绍

 2:如何获得session_key和openId官方提供了HTTP接口:

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

获取步骤:

(1)获得appid,secret,js_code 
(2)用appid,secret,js_code分别替换如上接口地址的APPID、SECRET、JSCODE,其他不变,组装成完整的地址。

例如:

微信小程序 登陆流程详细介绍 

3:在“浏览器打开此地址”或者“在后台模拟浏览器的GET执行此地址”就可返回如下的JSON数据(包含openid、sessionkey)

微信小程序获得session_key和openId(加解密、签名系列)

总结:从1,2,3步骤可知,只要获得appid,secret,js_code就可得到session_key和openId

微信小程序 登陆流程详细介绍

 4:appid和secret的获得

appid为小程序ID

secret为小程序密钥(AppSecret)

获得方法:小程序后台登录网址:https://mp.weixin.qq.com/

打开小程序后台网址、注册、登录后,按如下图所示就可找到你的AppID和AppSecret。

微信小程序获得session_key和openId(加解密、签名系列)

注意:目前小程序个人不能注册,开放注册范围:企业、政府、媒体、其他组织;当然用这个办法,个人也能注册了。

传送门:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=495

5:js_code如何获得调用wx.login()接口就可获取登录凭证(js_code)

微信小程序获得session_key和openId(加解密、签名系列)

微信小程序 登陆流程详细介绍

 6:总结整个session_key获取的流程

(1)注册微信小程序、登录后台在设置中获得appId和secret(密钥)
(2)调用wx.login()接口获取登录凭证js_code
(3)调用wx.request()接口把js_code发送到服务器后台
(4)在服务器后台,已知appId、secret、js_code

然后调用如下官方提供的http接口,即可返回获取openId、session_key

官方提供了http接口地址为:

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
javascript 保存文件到本地实现方法
Nov 29 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
Jan 24 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
Nov 26 Javascript
jquery用offset()方法获得元素的xy坐标
Sep 06 Javascript
JQuery中层次选择器用法实例详解
May 18 Javascript
谈一谈JS消息机制和事件机制的理解
Apr 14 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
May 23 Javascript
JavaScript学习笔记之数组基本操作示例
Jan 09 Javascript
Vue路由前后端设计总结
Aug 06 Javascript
十分钟教你上手ES2020新特性
Feb 12 Javascript
VueX模块的具体使用(小白教程)
Jun 05 Javascript
Vuex的各个模块封装的实现
Jun 05 Javascript
jQuery无刷新上传之uploadify简单代码
Jan 17 #Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
Jan 17 #Javascript
js处理层级数据结构的方法小结
Jan 17 #Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
Jan 17 #Javascript
JavaScript的事件机制详解
Jan 17 #Javascript
js判断手机号是否正确并返回的实现代码
Jan 17 #Javascript
深入理解javascript中的 “this”
Jan 17 #Javascript
You might like
PHP 常见郁闷问题答解
2006/11/25 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
php析构函数的简单使用说明
2015/08/24 PHP
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
fastclick插件导致日期(input[type="date"])控件无法被触发该如何解决
2015/11/09 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
vue router demo详解
2017/10/13 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
2018/09/30 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
Node.js API详解之 querystring用法实例分析
2020/04/29 Javascript
python list语法学习(带例子)
2013/11/01 Python
python中模块查找的原理与方法详解
2017/08/11 Python
python判断数字是否是超级素数幂
2018/09/27 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
青春励志演讲稿范文
2014/08/25 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
四风对照检查材料范文
2014/09/27 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
大学生村官个人总结
2015/02/15 职场文书
企业投资意向书
2015/05/09 职场文书