2024-09-03
学习
00
请注意,本文编写于 284 天前,最后修改于 201 天前,其中某些信息可能已经过时。

目录

微信登录流程教程:OAuth 2.0授权登录接入
准备工作
微信OAuth 2.0授权登录流程
授权流程简介
获取access_token的时序图
授权登录流程详细步骤
1. 发起微信授权请求
2. 获取access_token
3. 获取用户信息

微信登录流程教程:OAuth 2.0授权登录接入

微信登录是基于OAuth 2.0协议实现的,允许微信用户通过微信账户登录第三方应用或网站。在进行微信OAuth 2.0授权登录接入之前,你需要在微信开放平台注册开发者账号,并申请相应的AppID和AppSecret。本文将详细介绍微信OAuth 2.0授权登录的流程,并通过代码示例帮助你完成接入。

准备工作

在进行微信OAuth 2.0授权登录接入前,请确保你已完成以下步骤:

  1. 注册开发者账号:在微信开放平台注册开发者账号。
  2. 创建应用:创建一个网站应用,并确保该应用已经通过审核。
  3. 获取AppID和AppSecret:申请微信登录并通过审核后,你将获得你的应用的AppID和AppSecret,这是进行OAuth认证的必要凭证。

image.png

微信OAuth 2.0授权登录流程

微信OAuth 2.0授权登录流程让微信用户可以通过微信账户安全地登录到第三方应用或网站。当用户授权成功后,第三方应用可以获得用户的接口调用凭证(access_token),并通过该凭证访问微信开放平台的授权接口,以获取用户的基本信息或实现其他开放功能。

授权流程简介

微信OAuth 2.0授权登录采用 authorization_code 模式,这是一个典型的应用服务器端授权模式。其流程如下:

  1. 用户授权:第三方应用发起微信授权登录请求,用户同意授权后,微信会重定向到第三方应用的回调URL,并携带临时票据code
  2. 换取access_token:第三方应用使用获得的codeAppIDAppSecret等信息,调用微信开放平台的API接口换取access_token
  3. 获取用户信息:通过access_token,第三方应用可以获取用户的基本信息,或者执行其他微信开放平台的接口操作。

获取access_token的时序图

+-----------------+ +-------------------+ +-------------------------+ | 第三方应用 | | 微信授权服务 | | 微信开放平台 | +-----------------+ +-------------------+ +-------------------------+ | | | | --- (1) 发起授权请求 ----> | | | | | | | --- (2) 用户同意授权 -----> | | | <---- 返回code ------------- | | | | | --- (3) 使用code获取access_token ----> | | | | | | | <---- 返回access_token ------ | | | | | --- (4) 使用access_token获取用户信息 ----> | | | | | | | <---- 返回用户信息 ---------- | | | | +-----------------+ +-------------------+ +-------------------------+

授权登录流程详细步骤

1. 发起微信授权请求

第三方应用发起请求,引导用户授权登录。请求URL格式如下:

text
https://open.weixin.qq.com/connect/oauth2/authorize? appid=YOUR_APPID &redirect_uri=YOUR_REDIRECT_URI &response_type=code &scope=snsapi_userinfo &state=STATE #wechat_redirect
  • appid:你的应用的AppID。
  • redirect_uri:授权成功后,微信会回调到这个地址并附带code参数。
  • response_type:固定为code
  • scope:授权类型,通常为snsapi_userinfo,表示获取用户信息。
  • state:用于防止CSRF攻击,通常设置为随机字符串。

2. 获取access_token

当用户授权登录后,微信会重定向到你设置的redirect_uri,并附带一个临时code。你需要使用这个code来获取access_token

请求获取access_token的URL格式如下:

text
https://api.weixin.qq.com/sns/oauth2/access_token? appid=YOUR_APPID &secret=YOUR_APPSECRET &code=CODE &grant_type=authorization_code
  • appid:你的应用的AppID。
  • secret:你的应用的AppSecret。
  • code:上一步获取到的临时code
  • grant_type:固定为authorization_code

成功请求后,你将得到如下JSON响应:

json
{ "access_token": "ACCESS_TOKEN", "expires_in": 7200, "refresh_token": "REFRESH_TOKEN", "openid": "OPENID", "scope": "snsapi_userinfo" }
  • access_token:接口调用凭证。
  • expires_in:access_token的过期时间,单位秒。
  • refresh_token:刷新token,用于获取新的access_token。
  • openid:用户的唯一标识。

3. 获取用户信息

使用获得的access_tokenopenid来获取用户的基本信息。请求用户信息的URL如下:

text
https://api.weixin.qq.com/sns/userinfo? access_token=ACCESS_TOKEN &openid=OPENID &lang=zh_CN

成功请求后,你将获得如下JSON响应:

json
{ "openid": "OPENID", "nickname": "NICKNAME", "sex": 1, "province": "PROVINCE", "city": "CITY", "country": "COUNTRY", "headimgurl": "HEADIMGURL", "privilege": [] }
  • openid:用户的唯一标识。
  • nickname:用户的昵称。
  • sex:用户的性别。
  • province:用户所在省份。
  • city:用户所在城市。
  • country:用户所在国家。
  • headimgurl:用户的头像URL。

本文作者:han

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!