当前位置: 首页 > 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 万/分钟

相关文章:

微信网页授权步骤说明

总览 引导用户进入授权页面同意授权&#xff0c;获取code通过code换取网页授权access_token&#xff08;与基础支持中的access_token不同&#xff09;如果需要&#xff0c;开发者可以刷新网页授权access_token&#xff0c;避免过期&#xff08;一般不需要&#xff09;通过网页…...

linux bash shell变量操作符 —— 筑梦之路

1. 变量子串 ${var} 返回变量var的内容&#xff0c;单独使用时有没有{}一样&#xff0c;混合多个变量和常量时&#xff0c;用{}界定变量名 ${#var} 返回变量var内容的长度 ${var:offset} 从变量var中的偏移量offset开始截取到字符串结尾的子字符串&#xff0c;offset从0开始 ${…...

2.61【Python生成器与迭代器】

Python迭代器与生成器 迭代器 什么是迭代器 首先迭代是指python中访问元素的一种方式&#xff0c;迭代器是一个可以记住遍历位置的对象&#xff0c;因此不会像列表那样一次性全部生成&#xff0c;而是可以等到用的时候才生成&#xff0c;因此节省了大量的内存资源 可迭代对…...

devecho stuido npm 失败

使用华为推荐的设置npm 代理方式仍然无效。还是得使用npm 命令去设置代理。地址参考&#xff1a; npm设置和取消代理的方法_npm查看代理-CSDN博客 最后使用自己的代理加载成功&#xff0c;使用华为推荐的代理不成功&#xff0c;不清楚什么原因。 华为推荐的环境配置如下&…...

postgreSql逻辑复制常用语句汇总和说明

简单说明 postgreSql逻辑复制的原理这里不再赘述&#xff0c;度娘一下即可。这里只是对常用的语句做一些汇总和说明&#xff0c;以便日后查找时方便。 逻辑复制的概念 逻辑复制整体上采用的是一个发布订阅的模型&#xff0c;订阅者可以订阅一个或者多个发布者&#xff0c; 发…...

设置Ubuntu或树莓派系统,允许root用户ssh方式连接

Ubuntu 或 Raspbian 系统默认不允许root 用户以ssh方式连接。连接会报如下错误&#xff1a; Permission denied&#xff0c; please try again. 解决步骤&#xff1a; &#xff08;如果是树莓派系统&#xff1a;烧录到内存卡后&#xff0c;拔掉内存卡再重新插到PC机上&#x…...

Ubuntu安装向日葵【远程控制】

文章目录 引言下载向日葵安装向日葵运行向日葵卸载向日葵参考资料 引言 向日葵是一款非常好用的远程控制软件。这一篇博文介绍了如何在 Ubuntu Linux系统 中安装贝瑞向日葵。&#x1f3c3;&#x1f4a5;&#x1f4a5;&#x1f4a5;❗️ 下载向日葵 向日葵官网: https://sunl…...

jquery 实现倒计时60秒

jquery 实现倒计时60秒 <!DOCTYPE html> <html><head><meta http-equiv"content-type" content"text/html; charsetUTF-8"><meta content"widthdevice-width,initial-scale1.0,maximum-scale1.0,user-scalableno" i…...

单例模式:饿汉模式、懒汉模式

目录 一、什么是单例模式 二、饿汉模式 三、懒汉模式 一、什么是单例模式 单例模式是Java中的设计模式之一&#xff0c;能够保证某个类在程序中只存在唯一一份实例&#xff0c;而不会创建出多个实例 单例模式有很多实现方式&#xff0c;最常见的是饿汉和懒汉两种模式 二、…...

提升方法AdaBoost

通过改变训练样本的权重学习多个分类器&#xff0c;并将这些线性分类器进行线性组合&#xff0c;提高分类性能。 AdaBoost 提高前一轮被分类错误的权值&#xff0c;降低前一轮被分类正确的权值&#xff1b;加大分类误差错误率小的弱分类器权重。 算法&#xff1a; 输入&…...

Python自动化测试系列[v1.0.0][多种数据驱动实现附源码]

前情提要 请确保已经熟练掌握元素定位的常用方法及基本支持&#xff0c;请参考Python自动化测试系列[v1.0.0][元素定位] 数据驱动测试是自动化测试中一种重要的设计模式&#xff0c;这种设计模式可以将测试数据和测试代码分开&#xff0c;实现数据与代码解耦&#xff0c;与此同…...

【论文笔记】Gemini: A Family of Highly Capable Multimodal Models——细看Gemini

Gemini 【一句话总结&#xff0c;对标GPT4&#xff0c;模型还是transformer的docoder部分&#xff0c;提出三个不同版本的Gemini模型&#xff0c;Ultra的最牛逼&#xff0c;Nano的可以用在手机上。】 谷歌提出了一个新系列多模态模型——Gemini家族模型&#xff0c;包括Ultra…...

iOS加密CoreML模型

生成模型加密密钥 必须在Xcode的Preferences的Accounts页面登录Apple ID&#xff0c;才能在Xcode中生成模型加密密钥。 在Xcode中打开模型&#xff0c;单击Utilities选项卡&#xff0c;然后单击“Create Encryption Key”按钮。 从下拉菜单中选择当前App的Personal Team&…...

Springboot自定义start首发预告

Springboot自定义start首发预告 基于Springboot的自定义start , 减少项目建设重复工作, 如 依赖 , 出入参包装 , 日志打印 , mybatis基本配置等等等. 优点 模块化 可插拔 易于维护和升级 定制化 社区支持(后期支持) 发布时间 预告: 2023-12-10 预计发布: 2024-1-1 , 元旦首…...

[GWCTF 2019]我有一个数据库1

提示 信息收集phpmyadmin的版本漏洞 这里看起来不像是加密应该是编码错误 这里访问robots.txt 直接把phpinfo.php放出来了 这里能看到它所有的信息 这里并没有能找到可控点 用dirsearch扫了一遍 ####注意扫描buuctf的题需要控制扫描速度&#xff0c;每一秒只能扫10个多一个都…...

【LeetCode每日一题】1904. 你完成的完整对局数

给你两个字符串 startTime 和 finishTime &#xff0c;均符合 "HH:MM" 格式&#xff0c;分别表示你 进入 和 退出 游戏的确切时间&#xff0c;请计算在整个游戏会话期间&#xff0c;你完成的 完整对局的对局数 。 如果 finishTime 早于 startTime &#xff0c;这表示…...

+0和不+0的性能差异

前几日&#xff0c;有群友转发了某位技术大佬的weibo。并在群里询问如下两个函数哪个执行的速度比较快&#xff08;weibo内容&#xff09;。 func g(n int, ch chan<- int) {r : 0for i : 0; i < n; i {r i}ch <- r 0 }func f(n int, ch chan<- int) {r : 0for …...

美颜技术讲解:视频美颜SDK的开发与集成

如今&#xff0c;美颜技术的应用愈发成为吸引用户的一项重要功能。本文将深入探讨视频美颜SDK的开发与集成&#xff0c;揭示其背后的技术原理和实现步骤。 一、美颜技术的背后 美颜技术并非仅仅是简单的滤镜效果&#xff0c;而是一项涉及复杂图像处理和算法的技术。在视频美颜…...

期末数组函数加强练习

前言&#xff1a;由于时间问题&#xff0c;部分题解取自网友&#xff0c;但都是做过的好题。 对于有些用c实现的题目&#xff0c;可以转化成c实现&#xff0c;cin看成c的读入&#xff0c;可以用scanf&#xff0c;输出cout看作printf&#xff0c;endl即换行符 开胃菜&#xff…...

如何下载B站视频?我来教你B站视频下载方法

如何下载B站视频&#xff1f;B站作为一个巨大的宝藏库&#xff0c;日常可以拿它作为娱乐工具&#xff0c;刷一些有趣新奇的短视频。也可以把它作为一款成长学习工具&#xff0c;具有丰富的公开课、纪录片内容。 对于较短的视频来说&#xff0c;花费几分钟时间看一下就结束了&am…...

IDEA 2018.2.3 下 Maven 依赖包消失?别慌,可能是版本兼容性在作祟

IDEA 2018.2.3 下 Maven 依赖包消失的深度排查指南 当你打开一个尘封已久的老项目&#xff0c;准备继续维护或迁移时&#xff0c;突然发现IDEA的External Libraries里空空如也&#xff0c;只剩下孤零零的JDK包&#xff0c;整个项目文件一片飘红——这种场景对许多维护历史代码库…...

轻量级工作流编排引擎:从脚本管理到自动化流程的实践指南

1. 项目概述&#xff1a;从单体脚本到流程编排的进化 如果你和我一样&#xff0c;在数据工程、自动化运维或者机器学习模型训练这些领域摸爬滚打过几年&#xff0c;大概率会遇到一个相似的困境&#xff1a;手头的任务脚本越来越多&#xff0c;它们之间有的有依赖关系&#xff0…...

SOCD Cleaner终极指南:彻底解决游戏键盘方向冲突的免费开源神器

SOCD Cleaner终极指南&#xff1a;彻底解决游戏键盘方向冲突的免费开源神器 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 还在为格斗游戏中同时按下W和S导致角色卡顿而烦恼吗&#xff1f;或者在射击游戏急停转…...

用ZYNQ和LWIP搞定8路ADS8681数据采集:从Vivado Block Design到上位机TCP通信的完整流程

ZYNQ与LWIP构建的8通道高速数据采集系统实战指南 在工业自动化、测试测量和科研领域&#xff0c;多通道高精度数据采集系统正变得越来越重要。本文将详细介绍如何利用Xilinx ZYNQ SoC和LWIP协议栈&#xff0c;构建一个支持8路ADS8681同步采集的实时数据传输系统。不同于简单的代…...

婚礼技能库:用开源协作与项目管理思维打造个性化婚礼

1. 项目概述&#xff1a;婚礼技能库的诞生与价值婚礼&#xff0c;对大多数人来说&#xff0c;是人生中为数不多的、需要同时扮演项目经理、创意总监、财务主管和情感联络员的高压事件。筹备过程琐碎繁杂&#xff0c;从场地布置、流程设计&#xff0c;到妆发造型、摄影摄像&…...

罗技PUBG鼠标宏终极教程:告别压枪烦恼,轻松提升射击稳定性

罗技PUBG鼠标宏终极教程&#xff1a;告别压枪烦恼&#xff0c;轻松提升射击稳定性 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求…...

openpilot自动驾驶系统深度解析:架构剖析与实战指南

openpilot自动驾驶系统深度解析&#xff1a;架构剖析与实战指南 【免费下载链接】openpilot openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars. 项目地址: https://gitcode.com/GitHub_Trending/…...

GitClaw:基于Go的轻量级Git钩子服务器与集中式权限管理方案

1. 项目概述与核心价值如果你是一名开发者&#xff0c;尤其是经常在团队协作中处理Git仓库的工程师&#xff0c;那么你一定对“权限管理”这四个字又爱又恨。爱的是它能保障代码安全&#xff0c;恨的是它配置起来繁琐&#xff0c;尤其是在处理跨项目、跨团队的复杂权限矩阵时。…...

【ElevenLabs情绪模拟技术白皮书】:基于2,147小时情感语音标注数据集的11类基础情绪迁移模型验证报告

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs情绪模拟技术白皮书概述 ElevenLabs的情绪模拟技术并非简单调节音高或语速&#xff0c;而是基于多模态情感表征学习&#xff08;Multimodal Affective Representation Learning, MARL&#x…...

怎么判断一家工厂还在不在正常生产?6 类活跃度信号,从纸面到现场

跑工厂的销售员都遇到过这种事&#xff1a;手机里存着一份名单&#xff0c;导航开两小时&#xff0c;到门口才发现卷帘门焊死、车间长草、保安说"厂子去年就搬了"。 问题出在哪&#xff1f;大多数人判断"这家工厂在不在"&#xff0c;靠的是工商登记——执照…...