微信授权登陆

微信授权登陆

目录

一、微信小程序... 2

(一)登陆流程图... 2

(二)前端调用... 2

(三)获取用户信息的接口wx.getUserProfile. 3

二、uniapp. 4

(一)前期准备... 4

(二)    流程图... 5

(三)调用... 5

三、H5网页... 6

一、微信小程序

(一)登陆流程图

(二)前端调用

1. 前端调用wx.login获取code,再调用后端自定义接口把code传给后端。需要注意的是,这个code只是临时的,只有5分钟的使用时间,而且只能使用一次。

2. 后端用获取的code与微信接口服务换取openid(用户唯一标识)与session_key(会话密钥,可以用于解密私密信息encrydata,现在只能获取头像和昵称),关联openid和session_key自定义登录态session,利用session生成token,不可以把解析出来的openid和session_key直接返回给前端,会造成信息安全问题。

3. 后端将token返回给前端。

4. 前端缓存token,存wx.setStorageSync,取wx.getStorageSync。

5. 用户登录时,登录接口获取到token,再调用其他接口时,拦截器进行拦截,如果token有效,则放行请求;如果token失效(不存在、过期、格式不正确等原因),则无法访问该接口,需要重新登录。

如果觉得token验证太过复杂,也可以退而求其次,采用微信小程序自带的wx.checkSeesion检查下发的session_key是否过期(固定为两天)。

wx.checkSeesion是前端检查,非常方便,但是缺点也很明显:耗时长,通常需要300+ms ,另外前后端传递私密数据时,需要额外考虑数据安全问题(以openid为例,前端每次需要传递openid时,都需要先获取临时code,再传递给后端,后端再用code换取openid,开销极大),因此正式开发时极不建议使用wx.checkSeesion,token验证方式可以较好解决上述问题。

(三)获取用户信息的接口wx.getUserProfile

由原来的wx.getUserInfo更换为wx.getUserProfile,可直接获取到用户的昵称和头像。

具体接口调用详情请参考官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

二、uniapp

 (一)前期准备

如果是APP端,微信授权登录的前提是有微信appid,和appsercret 。需要去微信开发者平台创建app,或者小程序填写相关信息申请应用的appid和appSecret,直接登录微信开发者平台微信开放平台 然后登录,按照提示进行申请就好啦,然后在manifest.json中进行配置。注意,如果是没有appid和appSecret是无法是现在功能的。

(三)调用

1. 获取服务供应商uni.getProvider,需要注意的是,在H5端不能使用,其实获取服务供应商也就是获取权限,他的参数包括,授权登陆、分享、支付、推送。通俗解释就是,调用这个api,可以获取到当前手机允许该权限的软件。

2. 通过uni.login发起微信授权登录请求,在微信端,调用login后,会在authResult里面拿到登陆服务商提供的登录信息,不同的服务商返回的信息不完全相同。微信用户允许授权第三方应用后,微信会拉起应用或者重定向到第三方网站,并且带上授权临时票据code参数。后端通过code参数加上appid和appsecret等,通过API换取access-token并传给前端。

3. 获取用户信息uni.getUserInfo,在这个api里面的成功回调里面,我们可以拿到用户信息对象,里面包括了用户的名称等信息。

具体接口调用详情请参考官方文档:https://uniapp.dcloud.net.cn/tutorial/app-oauth-weixin.html#

三、H5网页

  1. 首先要保证在微信环境下,这是网页微信登陆的基础。
  2. 然后调取后台接口https://open.weixin.qq.com/后拼接自己要的内容或者项目地址。
  3. 调取跳转这个接口以后url里面会有多的query内容需要给获取的query内容传递给后台以保证微信的登陆。
  4. 之后后台会返回一个query里面内容是token的url然后根据token实现登陆(是否登陆成功是根据是否有本地存储里面是否存在token,在路由守卫那边)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值