微信小程序登录流程详细记录

微信小程序登录流程详细记录

2023年6月28日发(作者:)

微信⼩程序登录流程详细记录前⾔:最近在做⼀个微信⼩程序项⽬,其中⼀个必须的功能就是登录,⽽⼩程序的登录流程似乎⽐其他项⽬更复杂⼀些,所以在这⾥详细的记录⼀下。⼀. ⼩程序登录基本流程介绍1. ⾸先放⼀张官⽅⽂档的流程图: 过程:1. ⼩程序端调⽤ 获取 code (临时登录凭证 code 只能使⽤⼀次)。  这⼀步获取的 code 作⽤是表⽰⽤户已授权获取⽤户信息,但⽤户信息分为 ⾮敏感信息 和 敏感信息,这两者区别稍后会介绍到。2. 由于⼩程序后台授权域名⽆法授权微信的域名,所以我们只能通过我们⾃⼰的服务器去调⽤微信服务器去获取⽤户信息。故我们将 获取 code 通过 t 请求传⼊后台。3. 后台调⽤ 2SessIon 接⼝,换取⽤户唯⼀标识 OpenID 、 ⽤户在微信开放平台帐号下的唯⼀标识 UnionID(若当前⼩程序已绑定到微信开放平台帐号) 和 会话密钥 session_key。  openID:就像⼀个⼈的⾝份证⼀样,每⼀个⼩程序⽤户都有⼀个唯⼀的 openID,

   unionID:如果开发者拥有多个移动应⽤、⽹站应⽤、和公众帐号(包括⼩程序),可通过 UnionID 来区分⽤户的唯⼀性,因为只要是同⼀个微信开放平台帐号下的移动应⽤、⽹站应⽤和公众帐号(包括⼩程序),⽤户的 UnionID 是唯⼀的。换句话说,同⼀⽤户,对同⼀个微信开放平台下的不同应⽤,UnionID是相同的。  session_key:是开发者后台校验与解密开放数据的密匙之⼀,是微信官⽅返回的登录状态,保证了当前⽤户进⾏会话操作的有效性。(这⾥需要解密的开放数据就是敏感数据,如电话号) 解密算法共有 3 个密匙 另外两个是 iv 和 encryptedData,详情见

4. ⾃定义登录态与 openid 和 session_key 相关联,并把⾃定义登录态返回给⼩程序端。  为什么需要⾃定义登录态间接实现登录,⽤返回的 session_key 不是也⾏吗?前⾯也介绍了⽤户数据⾥存在敏感数据,考虑到安全性因素,如果直接使⽤微信服务端派发的 session_key 来作为业务⽅的登录态使⽤,会被“有⼼之⼈”⽤来获取⽤户的敏感信息,⽐如 rInfo() 这个接⼝呢,就需要session_key来配合解密微信⽤户的敏感信息。那么我们如果⽣成⾃⼰的登录态标识呢,这⾥可以使⽤⼏种常见的不可逆的哈希算法,⽐如md5、sha1等,将⽣成后的登录态标识(这⾥我们统称为'skey')返回给前端,并在前端维护这份登录态标识(⼀般是存⼊storage)。⽽在服务端呢,我们会把⽣成的skey当做键,session_key等信息当做值,存⼊⼀张表中,前端通过传递skey来存取⽤户的信息。

5. ⼩程序端存储获取到的⾃定义登录态,在需要的请求中携带⾃定义登录态。前⾯我们将skey存⼊前端的storage⾥,每次进⾏⽤户数据请求时会带上skey,那么如果此时session_key过期呢?所以我们需要调⽤到 ession() 这个API来校验当前 session_key 是否已经过期,这个API并不需要传⼊任何有关session_key的信息参数,⽽是微信⼩程序⾃⼰去调⾃⼰的服务来查询⽤户最近⼀次⽣成的 session_key 是否过期。如果当前 session_key 过期,就让⽤户来重新登录,更新 session_key,并将最新的skey存⼊⽤户数据表中。6. 后台则通过⾃定义登录态查询 openid 和 session_key,验证通过后返回业务数据。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1687893288a54551.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信