5.13微信登录维护态与获取用户信息思想

原文博客https://www.cnblogs.com/JinJi-Jary/p/6343745.html

前言、

  微信小程序的运行环境不是在浏览器下运行的。所以不能以cookie来维护登录态。下面我就来说说我根据官方给出的方法来写出的维护登录态的方法吧。

一、登录态维护

官方的文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject

  通过 wx.login() 获取到用户登录态之后,需要维护登录态。开发者要注意不应该直接把 session_key、openid 等字段作为用户的标识或者 session 的标识,而应该自己派发一个 session 登录态(请参考登录时序图)。对于开发者自己生成的 session,应该保证其安全性且不应该设置较长的过期时间。session 派发到小程序客户端之后,可将其存储在 storage ,用于后续通信使用。

登录时序图

从上图可以看出。当我们通过wx.login()获取code的后,发送给我们的服务器,然后去请求微信服务器换取得到对应的openid与session_key,openid是该用户在小程序中的唯一标识用于模板通知之类的。session_key就是用来解密用户的敏感信息。unionid之类的。unionid是微信用户在所有微信平台下的唯一标识。下面我会讲解一下如何得到。

以上就是我的实现方法。调用wx.login()得到code后请求服务器获取openid与session_key缓存在服务器当中。其中生成一个随机数为key,value为openid与session_key。然后返回到小程序通过wx.setStorageSync(‘LoginSessionKey‘,得到的随机数key)缓存在小程序当中。每当我们去请求服务器时带上LoginSessionKey即可给服务器读取从而判断用户是否在登录。是不是很简单呢?

二、用户数据的加解密

通过wx.login()登录之后。我们可以通过wx.getUserInfo()获取用户信息。其中一些不敏感的信息在返回的 result中的userInfo里。如想要获取敏感信息。openid,unionid之类的。则需要从密文中去解密得到。

而密文则在encryptedData这个字段当中。我们去请求我们服务器去解密然后得到敏感信息后则可以保存起来。

加密数据解密算法

接口如果涉及敏感数据(如wx.getUserInfo当中的 openId 和unionId ),接口的明文内容将不包含这些敏感数据。开发者如需要获取敏感数据,需要对接口返回的加密数据( encryptedData )进行对称解密。 解密算法如下:

  1. 对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。
  2. 对称解密的目标密文为 Base64_Decode(encryptedData),
  3. 对称解密秘钥 aeskey = Base64_Decode(session_key), aeskey 是16字节
  4. 对称解密算法初始向量 iv 会在数据接口中返回。

微信官方提供了多种编程语言的示例代码(点击下载)。每种语言类型的接口名字均一致。调用方式可以参照示例。

这时候我们通过小程序得到的result.encryptedData与result.iv与后端得到的session_key 解密出我们得到的敏感用户信息了。

官方给出的解密文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html

标签: 微信小程序

原文地址:https://www.cnblogs.com/wym591273/p/10855230.html

时间: 2024-10-09 03:51:33

5.13微信登录维护态与获取用户信息思想的相关文章

微信关注公众号以及获取用户信息

1.公众号获取用户信息 /// <summary> /// 获取用户基本信息(包括UnionID机制) /// 注意:如果开发者有在多个公众号,或在公众号.移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求. /// </summary> /// <param name="access_token"></param> /// <param

[小程序]微信小程序登陆并获取用户信息

1.小程序js端调用框架登陆API,获取到一个临时code,拿着这个code去调用自己的服务端接口 2.在自己的服务器端,使用app_id app_secrect code可以获取到用户的openid,这个id是用户唯一的id并且不会改变,可以把这个id返回给小程序端小程序端本地保存openid 3.获取用户信息很简单,并且不需要自己的服务器处理,只需要小程序端提供的API.前端页面wxml使用一个按钮,按钮里增加几个属性,就可以回调到小程序js部分的方法上,并且带着用户的个人信息,如昵称 头像

微信授权登录并获取用户信息接口开发

总结一下微信授权登录并获取用户信息 这个接口的开发流程. 一.首先你的微信公众号要获得相应的AppID和AppSecret,申请微信登录且通过审核后,才可开始接入流程. 二.授权流程 1.流程说明 (1). 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数: (2). 通过code参数加上AppID和AppSecret等,通过API换取access_token: (3). 通过access_token进行接口调用,获取

微信公众号开发--获取用户信息中文乱码的解决方案

在微信开发中我们会经常需要获取用户的信息. 微信给我们提供了获取用户信息的api, 地址为 https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN 将其中的access_token替换为我们的access_token openid为关注用户的openid就可以获取到用户的信息了. 问题描述 不过获取到的数据却是中文乱码 而用Java程序获取的结果也是一样的

PHP版微信第三方实现一键登录及获取用户信息的方法

本文实例讲述了PHP版微信第三方实现一键登录及获取用户信息的方法.分享给大家供大家参考,具体如下: 注意,要使用微信在第三方网页登录是需要"服务号"才可以哦,所以必须到官方申请. 一开始你需要进入微信公众平台开启开发模式,并且填写oauth2的回调地址,地址填写你项目的域名就可以了.比如:www.baidu.com或zhidao.baidu.com.如果你的项目在二级域名就写二级域名 前端url授权地址,在url中填写appid与你项目中方法中的oauth的地址,具体在下面的代码中可以

微信开发笔记——微信网页登录授权,获取用户信息

最近做了一个公司的微信的公众号,对微信的流程清楚了不少,这里记录下,算不上多高深的,只希望能帮助到一部分人吧. 我们公司的测试微信公众号:NPCgo 可以感受下,哈哈~~ 闲话少说,开始: 首先大家要看下微信的API文档. 微信网页授权,获取用户的微信官方API文档地址:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html 三次握手微信认证流程(我自己简称三次握手): 1.用户同意授权,获取code 2.通过c

[微信开发] - 使用普通扫码登录获取用户信息,非开放平台版本

微信平台扫码登录时,因为开放平台的openid与原系统不一致,所以使用了原公众平台二维码扫码后获取用户openid,继而转链接形式. 油腻腻的大猪蹄进行测试 oysIt005E1TDKTKIdc8TmR6VTViA < 使用开放平台的登录二维码扫码获取的openid o4mIl1jXCq4b2MkQ0tTZTzKzl2XY < 微信平台获取的openid o4mIl1jXCq4b2MkQ0tTZTzKzl2XY < 扫码临时二维码获取的openid 大致流程: 用户点击微信登录->

微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法.

今天讲讲利用微信oauth2实现第三方登陆的实现方法. 先说说前提吧! 首先你得是服务号,并且是经过认证的.这样微信会给你很多第三方接口的权限,如果是订阅号或者没有认证的服务号那就不用想了! 一开始你需要进入微信公众平台开启开发模式,并且填写oauth2的回调地址,地址填写你项目的域名就可以了.比如:www.baidu.com或zhidao.baidu.com.如果你的项目在二级域名就写二级域名 前端url授权地址,在url中填写appid与你项目中方法中的oauth的地址,具体在下面的代码中可

微信企业号 获取用户信息

业务操作最基础的一个功能是获取访客的身份,传统的获取方式是提供一个登录页面用以访客登录. 在微信企业号中,用户在微信中访问页面时,可以根据相关API获取此用户的微信账号信息,以此来匹配业务服务器存储的相关用户信息. 目录 1.  介绍 2.  代码示例 1. 介绍 1.1 说明 企业号的网页开发,说白了就是移动端web开发,特殊点在于如何获取微信用户的身份信息. 在企业号中可以进行如下步骤获取微信用户信息: 访问一个业务页面时,可通过OAuth验证接口获取此用户信息 → 根据code获取user