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


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 相关文章推荐
兼容IE和FF的js脚本代码小结(比较常用)
Dec 06 Javascript
jquery模拟按下回车实现代码
Sep 20 Javascript
JS 实现导航栏悬停效果(续)
Sep 24 Javascript
JS实现根据出生年月计算年龄
Jan 10 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
Aug 11 Javascript
javascript实现去除HTML标签的方法
Dec 26 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
Dec 30 Javascript
JavaScript中的高级函数
Jan 04 Javascript
小程序绑定用户方案优化小结
May 15 Javascript
Vue初始化中的选项合并之initInternalComponent详解
Jun 11 Javascript
微信小程序用户盒子、宫格列表的实现
Jul 01 Javascript
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
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 登录完成后如何跳转上一访问页面
2014/01/14 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
jQuery中验证表单提交方式及序列化表单内容的实现
2014/01/06 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
关于layui toolbar和template的结合使用方法
2019/09/19 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
Python实现115网盘自动下载的方法
2014/09/30 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
python requests.post带head和body的实例
2019/01/02 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
python编写实现抽奖器
2020/09/10 Python
C语言50道问题
2014/10/23 面试题
司机的工作范围及职责
2013/11/13 职场文书
大学生开西餐厅创业计划书
2014/02/01 职场文书
《落花生》教学反思
2014/02/25 职场文书
企业管理标语
2014/06/10 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js
tree shaking对打包体积优化及作用
2022/07/07 Java/Android