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


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 相关文章推荐
Script的加载方法小结
Jan 12 Javascript
js jquery数组介绍
Jul 15 Javascript
js浮点数精确计算(加、减、乘、除)
Dec 26 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
Aug 15 Javascript
微信小程序 解析网页内容详解及实例
Feb 22 Javascript
jQuery中 DOM节点操作方法大全
Oct 12 jQuery
Angular项目从新建、打包到nginx部署全过程记录
Dec 09 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
Oct 19 Javascript
关于js陀螺仪的理解分析
Apr 11 Javascript
详解javascript中var与ES6规范中let、const区别与用法
Jan 11 Javascript
使用eslint和githooks统一前端风格的技巧
Jul 29 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
Jan 25 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下通过伪造http头破解防盗链的代码
2010/07/03 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
javascript文件加载管理简单实现方法
2015/07/25 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
利用JS实现数字增长
2016/07/28 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
对python修改xml文件的节点值方法详解
2018/12/24 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
Python timeit模块原理及使用方法
2020/10/10 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
初任培训自我鉴定
2013/10/07 职场文书
英文求职信结束语大全
2013/10/26 职场文书
体育专业个人求职信范文
2013/12/27 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
代收款委托书范本
2014/10/01 职场文书
简单介绍Python的第三方库yaml
2021/06/18 Python
详解Python中*args和**kwargs的使用
2022/04/07 Python
Vue操作Storage本地化存储
2022/04/29 Vue.js