博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小程序踩坑系列一
阅读量:6996 次
发布时间:2019-06-27

本文共 868 字,大约阅读时间需要 2 分钟。

登录这块是基本每个 APP 都需要用到的技术,小程序这边的登录和其他的有点不同,本篇文章主要讲下登录这块的坑。

首先看一下文档里介绍登录的图

首先在第一个页面中调用 ws.login() 获取 code,然后在图片中写着直接将 code 发送给自己的后台,这其中少了一步调用 wx.getUserInfo 来获取一段加密串,得到这段加密串后将加密串和 code 一起发给服务器,然后服务器通过 APPID, APPSecret, code 参数请求微信服务器获得 session_key 和 openid。然后通过获得的 session_key 去解密之前发过来的加密串得到 unionid。

unionid 和 openid 是不同的,首先在小程序中获得 unionid 是需要先在微信后台绑定公众号,然后绑定小程序,才能获得 unionid 的。

unionid 和 openid 的区别在于,当我们分别有多个不同应用时,只通过 openid 去绑定微信帐号和用户帐号会帐号不统一,因为 openid 在多个应用间是不同的,然后 unionid 在多个应用间是相同的,通过 unionid 去绑定微信帐号和用户帐号能完成多个应用间的帐号统一,节约运营成本。

接下来服务器通过一段规则生成 3rd_session,并以 3rd_session为 key,session_key + openid 为 value,写入 session 存储。

服务器生成 3rd_session后,将 3rd_session 返回给客户端,客户端将 3rd_session 写入缓存。

图中写明在小程序请求时需要加上 3rd_session,这是因为小程序的请求是不支持传递 cookie 的,需要在 header 中自定义 key,将 3rd_session 作为 value 发送出去,服务器先检测 3rd_session 对应的 seesion_key 是否过期,如果过期,需要客户端重新发起 ws.login()

以上便是完整的登录请求流程。

转载地址:http://afzvl.baihongyu.com/

你可能感兴趣的文章
MongoDB入门上
查看>>
B进制星球
查看>>
[mysql] 无法通过insert 创建用户ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value...
查看>>
Ruby初探
查看>>
【移动端】单位em相关资料
查看>>
SQL优化-标量子查询(数据仓库设计的隐患-标量子查询)
查看>>
java 拷贝功能
查看>>
ZOJ2432 Greatest Common Increasing Subsequence 题解报告
查看>>
Cannot find module `express`
查看>>
20051206: 早退
查看>>
Tycho build 1: 构建插件
查看>>
ORACLE HANDBOOK系列之十三:计划任务(Scheduler)
查看>>
凸包问题的描述(Graham法)
查看>>
失败的沟通与成功的沟通
查看>>
学习技术,从何谈起
查看>>
android中按back键返回上一个activity,如何重新调用上一个activity的oncreate方法?...
查看>>
Ubantu 安装boost环境
查看>>
学号:201621123032 《Java程序设计》第13周学习总结
查看>>
本学期阅读计划
查看>>
Programming Ability Test学习 2-13. 两个有序序列的中位数(25)
查看>>