微信开发之微信环境h5页面登录实现流程

编程入门 行业动态 更新时间:2024-10-23 17:23:26

一、unionid和openId

在了解微信环境登录流程之前,先讲俩个概念:unionid和openId。

unionid表示某一个用户在某一个公司或者商家下的用户id(某公司或商家的身份证);

openid表示某一个用户在某一个公司或者商家下的某一个应用或者公众平台下的用户id(某一个应用或者公众平台的身份证)

所以,某一个公司或者商家下会有多个应用或者公众平台,那么就通过unionid来关联某一个用户在不同应用或者不同平台的关系。

二、静默授权和非静默授权

我们在平时开发中,总会听到产品要求是静默授权和非静默授权。那么二者之前有什么区别呢?

静默授权的意思是用户无感知的获取用户信息,不需要用户有任何的操作动作,注意静默授权只能获取到用户的openId。并不能获取到用户的其他信息。

非静默授权的意思是需要用户去操作,点击同意按钮,也就是说,如果产品要求是非静默授权,那么前端会弹起用户授权的按钮,待用户同意之后,就可以获取到用户的openId,个人信息,关注信息等相关内容。

注:静默授权和非静默授权的区别在于调用的接口的scope字段是snsapi_base还是snsapi_userinfo

三、登录流程

明白了unionid和openid、静默授权和非静默授权,我们也是时候该看看登录的流程了。

从上图中我们可以看到,过程并不复杂:

首先,前端会访问微信的授权地址:

https://open.weixin.qq/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_base&state=1#wechat_redirect

其中:

  • appid:是应用的appid
  • redirect_uri:是指回跳的url
  • response_type:只写code
  • scope:表示授权的作用域,多个可以用逗号隔开,snsapi_base表示静默授权,snsapi_userinfo表示非静默授权
  • state:用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验

第二步:这样我们在跳转回来的url就可以截取到回传的参数code,这时我们就可以用这个code去获取access_token和openid

// 请求url(Get)
https://api.weixin.qq/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

其中:

  • appid:应用的appid,
  • secret: 应用密钥AppSecret,
  • code:上一步中获取到的code
  • grant_type:值为authorization_code

这样返回值中,我们可以拿到access_token和openid等信息。返回的数据如下:

名称类型说明
access_tokenStringaccess_token
expires_inintaccess_token有效时间
refresh_tokenStringrefresh_token
openidStringopen_id
scopeString授权作用域

第三步:我们有了access_token和openid就可以去获取用户信息了。

// 请求url(Get)
https://api.weixin.qq/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

 其中:

  • access_token:上一步的access_token
  • openid:上一步的openid

返回值包括有用户手机号等:

名称类型说明
openidStringopen_id
unionidStringunion_id
nicknameString用户昵称
sexint性别
provinceString
cityString城市
countryString国家
headimgurlString用户头像
privilegeArray用户权限

 到此登录主流程走完。为什么说是主流程呢?因为登录的方式不同,但是主要是这样的,比如说pc端的扫码登录也是这样,不过是要把所扫的二维码的地址配置成获取code链接。

更多推荐

微信开发之微信环境h5页面登录实现流程

本文发布于:2023-06-11 17:29:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/639765.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:流程   页面   环境

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!