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


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 相关文章推荐
在多个页面使用同一个HTML片段的代码
Mar 04 Javascript
java和javascript获取word文档的书签位置对比
Jun 19 Javascript
node.js中的fs.ftruncate方法使用说明
Dec 15 Javascript
EasyUI中datagrid在ie下reload失败解决方案
Mar 09 Javascript
Bootstrap图片轮播组件使用实例解析
Jun 30 Javascript
javascript中的try catch异常捕获机制用法分析
Dec 14 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
Mar 13 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
Sep 12 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
Nov 21 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
Apr 08 Javascript
详解基于原生JS验证表单组件xy-form
Aug 20 Javascript
你不知道的 TypeScript 高级类型(小结)
Aug 28 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
第六节--访问属性和方法
2006/11/16 PHP
简单采集了yahoo的一些数据
2007/02/14 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
php查询内存信息操作示例
2019/05/09 PHP
jquery简单体验
2007/01/10 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
js选项卡的制作方法
2017/01/23 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
javascript前端实现多视频上传
2020/12/13 Javascript
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
简单了解python的一些位运算技巧
2019/07/13 Python
redis数据库及与python交互用法简单示例
2019/11/01 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
利用python绘制正态分布曲线
2021/01/04 Python
介绍一下游标
2012/01/10 面试题
青年创业培训欢迎词
2014/01/08 职场文书
合同意向书范本
2014/07/30 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书