java对接微信登录-扫一扫-关注公众号-发送模板消息-扫一扫分享(第一篇 扫一扫分享)

【二】微信公众号之扫码关注后自动登录 【二】微信公众号之扫码关注后自动登录 ​ 原来公司的官网就支持账号密码、手机验证码、QQ扫码授权、微信扫码授权等多种登录方式。昨天分享了微信公众号之扫码登录,今天接到需求说要为了咋们的公众号涨粉,要扫码后关注公众号后才可以登录,我一想这不是耍流氓嘛,登个网站还非得我关注。。。算了,产品爸爸说了算。 一、准备工作 查阅了微信公众号开发文档,发现可以用微信生成带参数二维码实现。看看人家的介绍 这不就是我们这个需求准备的接口嘛???? 二、整个流程说明 先来看看整个流程的时序图 然后咋们来捋一下整个流程 阅读详情

参考资料:

官网配置:分享接口官方文档
按照步骤来即可,图如下:
在这里插入图片描述

第一步:绑定域名

第三步:看wx.config所需要的配置

  • ps:(第二步 前端引入我就直接过了)
  • 这里需要后端给前端返回去签名,时间戳,签名随机串,jsApiList接口列表(这个反不反都行).

准备工作

  • 在这里先做一下准备工作,引入maven
 <!-- https://mvnrepository.com/artifact/com.github.binarywang/weixin-java-mp -->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-mp</artifactId>
            <version>4.1.0</version>
        </dependency>
          <!-- 增加hutool工具包 5.6.3 版本 -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
        </dependency>

配置yaml

  • 配置类先贴出来
wechat:
  ip: ca.ngrok.io
  path: http://ca.ngrok.io
  mpappid: appid
  mpappsecret: secret上边在测试公众号去拿就可以了
  template:
    follow:
      push: 模板消息的id

配置类

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
 * @author hanfeng
 * @date 2021/12/4
 */
@Data
@Component
@ConfigurationProperties(prefix = "wechat")
public class WechatAccountConfig {

    private String mpAppId;

    private String mpAppSecret;
    @Value(value = "${wechat.template.follow.push}")
    private String followPush;

}
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.stereotype.Component;
/**
 * @author hanfeng
 * @date 2021/12/4
 */
@Component
public class WeChatMpConfig {

    @Autowired
    private WechatAccountConfig wechatAccountConfig;

    @Bean
    public WxMpService wxMpService(){
        WxMpService wxMpService = new WxMpServiceImpl();
        wxMpService.setWxMpConfigStorage(wxMpConfigStorage());
        return wxMpService;
    }

    @Bean
    public WxMpConfigStorage wxMpConfigStorage(){
        WxMpDefaultConfigImpl wxMpDefaultConfig = new WxMpDefaultConfigImpl();
        wxMpDefaultConfig.setAppId(wechatAccountConfig.getMpAppId());
        wxMpDefaultConfig.setSecret(wechatAccountConfig.getMpAppSecret());
        return wxMpDefaultConfig;
    }
}

首先获取token

  • 然后先把获取token的方法写上(WxMpApiUrl,WxMpService 这个两个是maven带的)

  • 这里是controller层的代码


	 @Autowired
    private WxMpService wxMpService;
    @Autowired
    WxMpConfigStorage wxMpConfigStorage;
    @Autowired
    private WxMpMessageService mpMessageService;
    @Autowired
    private WechatAccountConfig accountConfig;

@ApiOperation("获取token")
    @GetMapping("/accessToken")
    public String accessToken() {
        String accessToken = "";
        try {
            WxMpApiUrl.Other getAccessTokenUrl = WxMpApiUrl.Other.GET_ACCESS_TOKEN_URL;
            String url = String.format(
                    getAccessTokenUrl.getPrefix() + getAccessTokenUrl.getPath(),
                    wxMpConfigStorage.getAppId(),
                    wxMpConfigStorage.getSecret());
            accessToken = HttpUtil.get(url);
            JSONObject jsonObject = JSONUtil.parseObj(accessToken);
            if (jsonObject.getStr("access_token") != null) {
                accessToken = jsonObject.getStr("access_token");
            }
            log.info("获取token:" + accessToken);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return accessToken;
    }

获取签名

@ApiOperation("获取签名")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "url", value = "当前页面url", required = true)
    })
    @GetMapping("/signature")
    public Result signature(String url) {
        Map<String, Object> map = new HashMap<>();
        try {
            WxMpApiUrl.Other getAccessTokenUrl = WxMpApiUrl.Other.GET_TICKET_URL;
            WxMpConfigStorage wxMpConfigStorage = wxMpService.getWxMpConfigStorage();
            String requestUrl = String.format(
                    getAccessTokenUrl.getPrefix() + getAccessTokenUrl.getPath() + "%s&access_token=%s",
                    "jsapi",
                    accessToken());
            String signature = HttpUtil.get(requestUrl);
            JSONObject jsonObject = JSONUtil.parseObj(signature);
            String errcode = jsonObject.getStr("errcode");
            if (StrUtil.equals("0", errcode)) {
                map.put("appId", wxMpConfigStorage.getAppId());
                map.put("jsApiList", CollUtil.newArrayList("updateAppMessageShareData", "updateTimelineShareData"));
                //获取到签名
                String jsapiTicket = jsonObject.getStr("ticket");
                //生成签名
                String nonceStr = RandomUtil.randomString(10);
                map.put("nonceStr", nonceStr);
                //当前时间戳
                String current = DateUtil.current() + "";
                map.put("timestamp", current);
                //我这里比较省事是直接拼起来的
                String str = "jsapi_ticket=" + jsapiTicket
                        + "&noncestr=" + nonceStr
                        + "&timestamp=" + current
                        + "&url" + url;
                String sha1 = SecureUtil.sha1(str);
                map.put("signature", sha1);
            }
            log.info("获取签名:" + signature);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return Result.success(map);
    }

第四步: 前端配置即可,后端工作准备到此

在这里插入图片描述
在这里插入图片描述

微信公众号二维码扫码登录(SpringBoot Java实现) 用户扫描公众号的二维码,实现登录当前平台。 若未关注公众号,则关注后触发登录;若已关注,则直接登录。 登录时通过union_id判断用户是否在系统注册,若未注册则跳转到注册页面或提示未注册。 阅读详情

相关推荐

基于 Java Spring Security 的关注微信公众号即登录的设计与实现 ya

太长不看版本 本文通过一个实际的具有一定商业价值的项目,展示了 API 优先的开发方法。通过薅羊毛的方式,落地了 Free Arch 架构。 背景和价值 通过微信公众号积累粉丝并进行商业活动宣传,是新媒体运营的常见方式。而系统对接微信登录,既能给用户带来便利,同时也能够给系统引流。但是传统或者标准的 PC 网页端微信扫码登录,用户扫码只需要做 OAuth 授权,不必关注公众号。但是对于运营者来说,更希望通过微信登录的用户,自动成为微信粉丝,实现系统中微信用户和公众号粉丝的一一对应。 ..

m0_67698950的博客 2272

Java实现微信公众号直接发送参数二维码给用户

公众号开发近些年是一个比较热门的方向,今天为大家讲解的是用Java如何实现自动生成二维码图片,有如何把这个和用户信息单独绑定的二维码图片直接发送给用户。

黑夜开发者的博客 1991

微信服务号模板消息推送实战:从access_token获取到RestTemplate调用

本文详细介绍了微信服务号模板消息推送的完整实战流程,从业务选型、服务号配置到核心代码实现。重点阐述了如何稳定获取和管理access_token,并使用RestTemplate构建并发送符合规范的模板消息JSON数据,为开发者提供了一套高效、可靠的消息推送解决方案。

web39explorer的博客 455

java实现扫码关注公众号--pc登录网站

3.用户扫码关注后,微信服务器会通知微信接口配置的url接口并携带{FromUserName:发送方的openid,Event:事件类型 subscribe(订阅)、unsubscribe(取消订阅),二维码的ticket}等信息。2.服务端请求微信接口生成带参数的二维码,微信会返回{二维码ticket,二维码有效时间,二维码图片地址}等信息。4.服务器拿到openId和ticket 将 ticket作为key,openId作为value 存储至redis。被微信服务器通知的服务端接口。

hangkaixinjiuhao的博客 821

微信公众号扫码登录全流程解析:从原理到工程实践

OAuth2.0授权协议是现代Web应用实现第三方登录的基石,其核心原理是通过授权码(code)在资源所有者、客户端和授权服务器之间安全交换访问令牌。在微信生态中,这一协议被具体化为网页授权流程,为开发者提供了便捷的用户身份验证与信息获取能力。其技术价值在于,既能保障用户隐私与账户安全,又能实现跨平台用户身份的统一识别,极大降低了用户的注册与登录门槛。在工程实践中,该技术广泛应用于需要快速获取用户、实现社交登录或与微信生态深度整合的场景,例如电商、内容社区、在线服务等平台。本文聚焦于微信公众号扫码登录方案,

395

企业微信H5授权登录实战:安全加固、性能优化与深度集成指南

OAuth 2.0授权码模式是现代Web应用实现第三方登录的通用标准,其核心原理是通过授权码(code)安全交换访问令牌(access_token),从而在无需用户暴露密码的情况下获取其身份信息。这一机制在保障安全的同时,为应用提供了便捷的用户接入能力,尤其在企业级场景中,能有效整合组织架构与身份认证体系。企业微信H5授权登录正是基于此标准,并针对企业环境进行了深度定制,其技术价值在于为内外部业务系统提供了统一、安全且可扩展的身份入口。在实际应用中,开发者常面临高并发下的性能挑战、登录态管理以及与企业微信原

weixin_30607029的博客 332

Springboot实现微信公众号模板消息发送

最近看了一个地推的公众号,每天都会给你推送好几条地推需要的模板消息,好一段时间没有做公众号开发了,最近刚申请了个服务号,刚好可以拿来开发。模板消息需要服务号才可以,申请服务号的话需要企业营业执照,个人的话是没有办法申请的。下面来分享一下我的开发过程。 开发步骤 1.微信公众号服务号 2.准备好 APPID 跟AppSecret 3.开通模板消息,申请一个模板,获取模板ID 4.获取ACCESS_TOKEN 5.获取关注公众号的用户列表 6.选择需要发送的用户,并推送消息 一、资料申请 1.1、获取 APP

猪大肠的博客 7919

WxJava实现微信公众号OAuth2.0网页授权:从原理到实战

OAuth2.0是一种开放授权协议,它允许第三方应用在用户授权后,安全地访问用户在资源服务器上的特定信息,而无需获取用户的账号密码。其核心原理是通过授权服务器颁发访问令牌,实现安全的委托授权。在技术价值上,OAuth2.0解决了应用间安全共享资源的问题,是构建现代分布式、微服务架构中身份认证与授权的基础组件。其典型的应用场景包括社交登录、API访问授权以及第三方应用集成。在微信公众号开发中,获取用户头像、昵称等信息正是通过OAuth2.0的授权码模式实现的。本文聚焦于**微信公众号网页授权**这一具体场景,

weixin_33845881的博客 411

java实现微信公众号的模板消息推送

文章目录前言一、什么是模板消息二、获取模板ID三、获取access_token四、发送消息五、完整的代码总结 前言 最近做项目时需要用到公众号的模板消息,所以在这里记录分享一下实现过程 一、什么是模板消息 ↓↓↓↓ 官方文档 微信公众号提供了多种消息能力,这里我们主要讲得是模板消息,有需要其他消息实现方式的朋友可以留言,出其他实现文章。 功能介绍 模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用

不曾留得桃花影 9520

聊聊微信公众号羽毛球自动抢定场程序的制作

如果你有明确的需求,可以提供更详细的场馆系统和微信公众号要求,我能进一步为你制定开发计划。如果你想找人做这件事,可以在开发者社区或相关平台上发布项目说明。希望如上措施及解决方案能够帮到有需要的你。PS:如若遇到采纳如下方案还是未解决的同学,希望不要抱怨&&急躁,毕竟影响因素众多,我写出来也是希望能够尽最大努力帮助到同类似问题的小伙伴,即把你未解决或者产生新Bug黏贴在评论区,我们大家一起来努力,一起帮你看看,可以不咯。

**My Coding Family** 1385

H.264 Profile与Level详解:如何为不同应用场景选择合适的编码配置

本文深入解析了H.264编码标准中的Profile与Level概念,指导开发者如何为不同应用场景选择合适的配置。文章对比了Baseline、Main和High三大Profile的特性与适用场景,并解释了Level如何限定视频的分辨率、帧率与码率上限。通过实战指南,帮助读者在视频通话、在线点播和专业制作等场景中,平衡画质、兼容性与性能,实现高效编码。

rgv2345678的博客 238

【公众号开发】公众号技术分享-公众号模板消息-模板模式实战分享

大家好啊,我是Brath,一名激进的全栈开发者,从这期专栏开始,我会逐渐分享面试记项目中的部分优质源码给到大家。还希望大家多多关注! ​ 上期我们介绍了微信模板消息的配置方式,以及Java代码示例,接下来我们要用更优雅的方式来实现发送模板消息!

Brath的博客 2506

虚拟机安装Centos8.5

Centos8.5

weixin_63604047的博客 957

微信公众号开发

在线教育平台开发(微信公众号部分)

qq_40269583的博客 9384

精益六西格玛Python数字化应用开发-Day18 应用场景:家电企业生产效率优化

本文将重点介绍专门针对精益六西格玛黑带使用场景的 Python 库,这些库功能侧重于数据分析和流程优化,特别适用于 DMAIC 方法论和看板管理。考虑到读者具备中高级Python 使用经验,我们将深入探讨各库的高级功能和实际应用应用场景。 某家电企业生产线自动化程度高,数据量巨大,希望通过精益管理提升生产效率。企业借助 Python 脚本,打通各类数据源(MES、ERP、设备日志),自动归集生产数据,分析各工序的生产节拍、设备停机、效率损失,快速定位瓶颈环节

m0_56592100的博客 905

【智能车学习】电磁循迹中的基本控制算法

今天心血来潮,突然想总结一下电磁车的一些基本算法,也希望可以给新手同学们一点帮助和参考。本篇主要讲述智能车电磁循迹中涉及到的基本算法,包括滤波算法,归一化算法,PID控制等

Carry_qing的博客 6万+

5行代码实现微信模版消息推送,springboot实现微信推送,java微信推送

如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了。desc: 模版消息推送模拟。微信:2501902696。微信:2501902696。

2401_83977626的博客 628

究竟什么是虚拟同步机???虚拟同步机巨简单理解

同步发电机定子铁芯的内圆均匀分布着定子槽,槽内按一定规律嵌放着对称的三相绕组U1-U2、V1-V2、W1-W2,如图1所示。工作原理转子铁芯上装有制成一定形状的成对磁极,磁极上绕有励磁绕组。励磁绕组上通直流电时,会在电机的气隙中形成极性相间的分布磁场,称为励磁磁场。当原动机拖动转子以恒定速度旋转时,励磁磁场随转轴一起旋转并顺次切割定子各相绕组。定子电枢绕组中将会感应出大小和方向周期性变化的三相对称正弦感应电动势。各相电动势大小相等,相位各差120°。

weixin_53126442的博客 2603

[wxpusher]分享一个服务器推送消息到微信上的小工具,可以用于微信推送提醒和告警。...

背景 作为一个程序员,业余搞点自己的东西很正常,一般程序员都会有一两台自己的服务器,谁叫今天xx云搞活动,明天yy云搞活动呢。 自家的服务器用来跑爬虫,跑博客,或者跑一些个人业务,但当服务有新状态,抢到课了,刷到车票了,爬虫cookie过期了等,需要及时提醒我们。 现有的方案,大概就是下面2种: 方式 优点 缺点 短信 实时性强 要钱 邮件...

b603172896422915的博客 1001

SAP接口错误查询日志

随着数字经济的迅速发展,企业数字化转型不在只追求“业财一体化”,而是在业务端也想要进行更为精细化的管理,所以很多企业在SAP ERP的基础上,集成更多垂直领域更精细的外围系统,比如销售CRM系统,采购SRM系统,生产MES系统等等,琳琅满目的产品,那对SAP实施来说,系统集成过程中,接口的一些报错查询能力必不可少,今天我们就介绍一下,SAP和CRM系统集成中接口常见的报错。

weixin_43657667的博客 2047

Sigrity XtractIM实战:5步搞定IC封装宽带模型提取(附BGA案例)

本文通过一个典型BGA封装案例,详细介绍了使用Cadence Sigrity XtractIM工具进行IC封装宽带模型提取的五步实战流程。内容涵盖从环境准备、参数设置、结果验证到模型导出的完整操作,重点阐述了如何利用XtractIM生成高精度、紧凑的宽带SPICE模型,以解决高速电路设计中因封装模型不准导致的信号与电源完整性问题,助力工程师提升仿真精度与设计效率。

a1b2c的博客 319

公众类型号推送消息Java分享心得~

公众号实现推送消息通常需要以下参数: 推送目标:指定要发送消息的用户或用户群体,可以是所有关注公众号的用户、指定标签的用户、指定地理位置的用户等; 消息内容:包括文本、图片、视频、链接等不同类型的消息内容; 推送时间:指定消息发送的时间,可以是立即发送或是定时发送。

ran0021的博客 831

回归预测 | MATLAB实现基于贝叶斯线性回归(Bayesian Regression)的多变量输入回归预测

回归预测 | MATLAB实现基于贝叶斯线性回归(Bayesian Regression)的多变量输入回归预测

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 2195

微信公众号后台配置步骤

摘要:本文为微信公众号配置指南,分为四大模块: 基础配置:包括账号信息、菜单栏、自动回复和素材管理; 功能模块:如微信支付、模板消息、卡券和小程序跳转; 开发者配置:涉及服务器设置、域名授权及IP白名单; 合规安全:强调资质要求与风控规则。文末提供常见问题解答和推荐配置顺序,适合新手快速上手公众号运营与技术对接。 (字数:147)

明月的博客 1441

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

微信公众平台开发-java

    微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,首先我们登录微信公众平台,通过其后台设置一些基础服务,如菜单设置、消息自动回复,但由于企业服务具有复杂性。通过微信公众平台后台设置一般无法满足自己的业务需求。所以,我们需要通过自己的服务器灵活的去控制微信服务。    在开发之前有个概念我们要弄清楚,微信用户属于微信公众平台(腾讯公司),我们无法直接与用户进行交互,我们的微信用户...

weixin_39310585的博客 2887

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: 微信测试公众号配置问题“errcode“:-106token check fail“
下一篇: FileInputStream读取网络文件替换方案
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值