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


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 相关文章推荐
基于豆瓣API+Angular开发的web App
Jan 02 Javascript
Vue.JS入门教程之处理表单
Dec 01 Javascript
Vue异步组件使用详解
Apr 08 Javascript
Vue2单一事件管理组件通信
May 09 Javascript
angularjs实现简单的购物车功能
Sep 21 Javascript
Angular表格神器ui-grid应用详解
Sep 29 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
Dec 29 Javascript
node app 打包工具pkg的具体使用
Jan 17 Javascript
关于vue组件事件属性穿透详解
Oct 28 Javascript
extjs4图表绘制之折线图实现方法分析
Mar 06 Javascript
通过实例解析JavaScript常用排序算法
Sep 02 Javascript
详解Vite的新体验
Feb 22 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设计模式中的工厂模式
2008/06/12 PHP
PHP+ACCESS 文章管理程序代码
2010/06/21 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
帝国cms目录结构分享
2015/07/06 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
简单的通用表达式求10乘阶示例
2014/03/03 Python
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
flask开启多线程的具体方法
2020/08/02 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
2014大学生党员评议个人总结
2014/09/22 职场文书
走群众路线学习心得体会
2014/10/31 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
MySQL连接控制插件介绍
2021/09/25 MySQL
Java数组详细介绍及相关工具类
2022/04/14 Java/Android