微信第三方登录

354 阅读2分钟

前言

最近,我开始对接一个微信第三方登录的业务,做的比较难受。不是太熟悉,看CSDN还被误导了,网上的东西还是良莠不齐。我决定自己整理一下。

参考链接:

微信官方文档

静默登录

是小程序或者网页通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。

开发流程

  1. 第一步:用户同意授权,获取code
  2. 第二步,通过code换取网页授权access_token
  3. 第三步,刷新access_token(如果有需要)
  4. 第四步,拉取用户信息(需scope为snsapi_userinfo)
  5. 检验授权凭证(access_token)是否有效

第一步:用户同意授权,获取code

1.在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(已认证服务号,默认拥有 scope 参数中的snsapi_base和snsapi_userinfo 权限),引导关注者打开如下页面:

open.weixin.qq.com/connect/oau…

这里面的APPID,重定向的链接,一般是获取后端的。

第二步:通过 code 换取网页授权access_token

获取 code 后,请求以下链接获取access_token:

api.weixin.qq.com/sns/oauth2/…

第三步:刷新access_token(如果需要)

由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。

取第二步的refresh_token后,请求以下链接获取access_token:

api.weixin.qq.com/sns/oauth2/…

第四步:拉取用户信息(需 scope 为 snsapi_userinfo)

http:GET(请使用 https 协议):

api.weixin.qq.com/sns/userinf…

网页授权的两种 scope 的区别说明

  1. 以snsapi_base为 scope 发起的网页授权,是用来获取进入页面的用户的 openid 的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
  2. 以snsapi_userinfo为 scope 发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

\