当前位置: 首页 > news >正文

微信网页授权步骤说明

总览

  1. 引导用户进入授权页面同意授权,获取code
  2. 通过code换取网页授权access_token(与基础支持中的access_token不同)
  3. 如果需要,开发者可以刷新网页授权access_token,避免过期(一般不需要)
  4. 通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)

获取code

解释:让用户跳转到拼接后的指定地址,进行授权获取code,然后重定向到redirect_uri,重定向后的地址带有code和state参数

拼接地址:https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=redirect_uri&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect,其中appid和redirect_uri需要替换,且redirect_uri需要encodeURI处理,state为可选值用于用户自定义传参。

通过code换取access_token和用户信息

这里只写Java示例,且使用weixin-java-mp依赖

引入以下依赖

<dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>4.5.0</version>
</dependency>

在application.yml中添加如下参数

# 自定义微信相关配置信息
wx:mp:# 微信公众号的appidappId: wxajhlksfnjls777777# 信公众号的app secretsecret: sds56dg4fd5sd54s5555555

创建WxMpProperties如下

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@Data
@ConfigurationProperties(prefix = "wx.mp")
public class WxMpProperties {/*** 设置微信公众号的appid*/private String appId;/*** 设置微信公众号的app secret*/private String secret;
}

创建WxMpConfiguration如下

import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class WxMpConfiguration {@Autowiredprivate WxMpProperties wxMpProperties;/*** 微信客户端配置存储*/@Beanpublic WxMpConfigStorage wxMpConfigStorage() {WxMpDefaultConfigImpl configStorage = new WxMpDefaultConfigImpl();// 设置微信公众号appIdconfigStorage.setAppId(wxMpProperties.getAppId());// 设置微信公众号appSecretconfigStorage.setSecret(wxMpProperties.getSecret());return configStorage;}/*** WxMpService多个实现类 声明一个实例*/@Beanpublic WxMpService wxMpService() {WxMpService wxMpService = new WxMpServiceImpl();wxMpService.setWxMpConfigStorage(wxMpConfigStorage());return wxMpService;}
}

然后在Controller中引入WxMpService

@RestController
public class LoginController {@Autowiredprivate WxMpService wxMpService;@PostMapping("/wx/login")public SysAjaxResult login(@RequestBody Map<String, String> params) {String code = MapUtils.getString(params, "code");if (StringUtils.isBlank(code)) {return SysAjaxResult.error("code不能为空");}try {// 获取accessToken,获取用户信息(据官方文档,下面两个接口调用频率为每分钟5万次)WxOAuth2AccessToken accessToken = wxMpService.getOAuth2Service().getAccessToken(code);WxOAuth2UserInfo userInfo = wxMpService.getOAuth2Service().getUserInfo(accessToken, null);// 通过openid校验有没有当前用户,没有则新增String openid = userInfo.getOpenid();return AjaxResult.success();} catch (WxErrorException e) {e.printStackTrace();}return AjaxResult.error();}
}

时效

接口名频率限制
通过 code 换取 access_token5 万/分钟
获取用户基本信息5 万/分钟
刷新 access_token10 万/分钟
http://www.lryc.cn/news/259792.html

相关文章:

  • linux bash shell变量操作符 —— 筑梦之路
  • 2.61【Python生成器与迭代器】
  • devecho stuido npm 失败
  • postgreSql逻辑复制常用语句汇总和说明
  • 设置Ubuntu或树莓派系统,允许root用户ssh方式连接
  • Ubuntu安装向日葵【远程控制】
  • jquery 实现倒计时60秒
  • 单例模式:饿汉模式、懒汉模式
  • 提升方法AdaBoost
  • Python自动化测试系列[v1.0.0][多种数据驱动实现附源码]
  • 【论文笔记】Gemini: A Family of Highly Capable Multimodal Models——细看Gemini
  • iOS加密CoreML模型
  • Springboot自定义start首发预告
  • [GWCTF 2019]我有一个数据库1
  • 【LeetCode每日一题】1904. 你完成的完整对局数
  • +0和不+0的性能差异
  • 美颜技术讲解:视频美颜SDK的开发与集成
  • 期末数组函数加强练习
  • 如何下载B站视频?我来教你B站视频下载方法
  • AcWing 3709:单链表节点交换 ← 四川大学考研机试题
  • RocketMQ源码 Broker-ConsumerFilterManager 消费者数据过滤管理组件源码分析
  • 数据挖掘-07-航空公司客户价值分析(包括数据和代码)
  • 浏览器 css 默认的字体图表
  • JAVA:注册表窗口的实现
  • Liunx Centos 防火墙操作
  • VirtualBox 和 Vagrant 快速安装 Centos7 报错
  • 使用Python进行数学四则运算
  • 成都工业学院2021级操作系统专周课程设计FCFS,SSTF,SCAN,LOOK算法的实现
  • 【51单片机系列】矩阵按键扩展实验
  • 大数据云计算——Docker环境下部署Hadoop集群及运行集群案列