微信Java SDK开发文档(2.0.0)地址:https://github.com/wechat-group/weixin-java-tools/wiki

微信Java SDK使用说明: https://github.com/wechat-group/weixin-java-tools/

SDK作用:他已经把微信大部分功能都做好了,我们只需要进行配置,再调用其方法就可以完成微信的一些功能开发。

目前开源的微信公众号SDK有:jfinal-weixin,weixin-java-tools,fastweixin,weixin-popular
本次使用weixin-java-tools。

1.在maven中添加依赖
<!-- 微信公众号 -->
<dependency>
  <groupId>com.github.binarywang</groupId>
  <artifactId>weixin-java-mp</artifactId>
  <version>3.0.0</version>

</dependency>

2.在项目中进行配置,

一般配置信息不会在项目代码中进行配置,会统一做一个全局配置

package com.wechat.order.config;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*微信公众号账号设置*/
@Data//使用了lombok依赖,相当于在代码中getter和setter的作用
@Component
@ConfigurationProperties(prefix = "wechat")//账号信息写在了application.yml中。
public class WeChatAccountConfig {private String mpAppId;private String mpAppSecret;
}
package com.wechat.order.config;import me.chanjar.weixin.mp.api.WxMpConfigStorage;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;/*微信公众号配置*/
@Component
public class WeChatMpConfig {@Autowiredprivate WeChatAccountConfig weChatAccountConfig;//把你要实例化的对象转化成一个Bean,放在IoC容器中@Beanpublic WxMpService wxMpService() {WxMpService wxService = new WxMpServiceImpl();// 实际项目中请注意要保持单例,不要在每次请求时构造实例,具体可以参考demo项目wxService.setWxMpConfigStorage(wxMpConfigStorage());return wxService;}@Beanprivate WxMpConfigStorage wxMpConfigStorage() {WxMpInMemoryConfigStorage config = new WxMpInMemoryConfigStorage();config.setAppId(weChatAccountConfig.getMpAppId()); // 设置微信公众号的appidconfig.setSecret(weChatAccountConfig.getMpAppSecret()); // 设置微信公众号的app corpSecretreturn config;}
}

3.调用方法

package com.wechat.order.controller;import com.wechat.order.enums.ResultEnum;
import com.wechat.order.exception.SellException;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.net.URLEncoder;@Controller
@RequestMapping("/wechat")
@Slf4j//日志注解
public class WeChatController {@Autowiredprivate WxMpService wxMpService;/*** 换取微信用户openId* @param returnUrl* @return*/@GetMapping("/authorize")public String authorize(@RequestParam("returnUrl")String returnUrl) {//1.配置(在上步已配置完毕)//2.调用方法String url = "http://e724bad2.ngrok.io/sell/wechat/userInfo";//实际项目中,网站根目录应该做一个全局配置,此处为了方便,直接写String redirectUri = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, URLEncoder.encode(returnUrl));log.info("redirectUri={}", redirectUri);//日志return "redirect:" + redirectUri;//跳转}/*获得用户信息*/@GetMapping("/userInfo")public String userInfo(@RequestParam("code") String code,@RequestParam("state") String returnUrl) {//获得access tokenWxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();try {wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);}catch (WxErrorException e){log.error("【微信网页授权】{}",e);throw new SellException(ResultEnum.WECHAT_MP_ERROR);//授权失败抛出异常,此方法同学们自行编写,若不会可删除此行。}//获取openIdString openId = wxMpOAuth2AccessToken.getOpenId();log.info("openId={}",openId);return "redirect:" + returnUrl+"?openid="+openId;}
}

笔者为学生,初次写博客。若写的不好之处,请大家见谅,指出。

Java微信SDK方式进行网页授权相关推荐

  1. 连小白都能看懂的微信开发之 微信自定义菜单 + 获取网页授权 + 获取用户信息

    微信自定义菜单+获取网页授权+获取用户信息 今天项目需要一个需求,就是添加一个菜单接口,并且还可以获取用于的信息,从而根据用户的信息去做一些业务的查询.通过百度和自己查看文档大致的解决办法如下: 注意 ...

  2. 微信公众号的网页授权如何在本地调试?

    调试微信公众号的网页授权时,要填写网页授权域名(如图1),否则授权的时候会提示redirect_uri参数错误(图2),可是我得在localhost先调试成功才能上传到实际的网站上吧,可是这里不支持l ...

  3. 微信公众号-测试号-网页授权

    微信公众号-测试号-网页授权 自己摸索几天,总算搞清楚了 第一步 登录微信公众号平台,开发者工具菜单进入公众平台测试账号 第二步 设置网页帐号 网页授权获取用户基本信息的域名,测试号是可以用ip和域名 ...

  4. 微信公众平台-测试号网页授权-获取openid方法

    文章目录 1.创建自己的测试号 2.测试号管理信息填写(注意仔细一步步对照) 3.手动获取openid 4.使用SDK获取openid 1.创建自己的测试号 通过申请链接:https://mp.wei ...

  5. 微信企业号之构造网页授权链接

    一.相关介绍 在企业微信中,我们可以开发企业应用.使用企业应用,我们可以访问到外部网站.那么外部网站如何获取到企业微信共享用户userid以及用户的相关信息,企业微信提供了OAuth的授权登录方式,可 ...

  6. 【wechat】微信开发——OAuth2.0网页授权

    一.框架.工具 spring+springMvc+idea 二.具体实现 1.首先需要了解一下微信提供的API开发文档 2.目的:授权后可获取用户基本信息,进而实现业务逻辑 3.需要的配置(参看API ...

  7. springboot微信sdk方式进行微信支付

    微信支付: 官方文档:https://pay.weixin.qq.com/wiki/doc/api/index.html 第三方SDK:https://github.com/Pay-Group/bes ...

  8. asp.net获取浏览器的唯一标识_vue单页面应用如何在微信浏览器里进行网页授权获取用户信息

    前言 在vue单页面应用比较流行的时代,如何把vue应用和微信公众号两者结合在一起也是比较常见的功能.如果仅仅是把一个vue应用放在公众号上,没有进行额外的微信功能开发,如:获取用户信息,支付,分享等 ...

  9. 微信自定义菜单与网页授权结合

    用Java开发,微信自定义菜单的URL例如 即进入网页授权  网页静默授权  可以获取用户信息 ,此处可以根据点击的菜单进入相应的菜单界面,在界面中涉及到JS-SDK的使用,步骤:生成JSSDK签名步 ...

最新文章

  1. 截取指定内容/截取用逗号隔开的各个关键字
  2. 洛谷 - P4197 Peaks(Kruskal重构树+dfs序+主席树)
  3. 我也想对广大程序员说一些话
  4. Jinja2学习笔记暨官方文档的翻译 -- 转载
  5. 多种方法列出集合中的所有子集(Python和Java实现)
  6. mysql ext_RHEL5+postfix+mysql+extmai(源代码)(一)
  7. word不能插入压缩包等文件的解决办法
  8. 1008 数组元素循环右移问题 (20 分)—PAT (Basic Level) Practice (中文)
  9. Kubernetes详解(三)——Kubernetes集群组件
  10. jdk重复安装,Error:Registry key ‘Software\JavaSoft\Java Runtime Environment\CurrentVersion(已解决)
  11. 学习php开发难吗,PHP开发自学难吗,PHP自学要多长时间?
  12. 组合体视图的画图步骤_§5-2 画组合体视图的方法与步骤—叠加型组合体的视图画法...
  13. wbin笔记本商务版博通机型装(原版黑苹果)单MacOS流程记录(备忘)
  14. ERP系统里的BOM展开函数
  15. LINE FRIENDS 跨界李宁推出联名系列
  16. 游戏开发论坛_游戏开发制作全流程介绍
  17. python_获取文件及文件夹大小修改时间
  18. 国际标准之国家编码 - ISO 3166
  19. 动漫行业长尾词,动漫行业推广怎么选择长尾词
  20. apple watch和小米手表的操作逻辑对比:

热门文章

  1. paypal简单分享
  2. [app-name] was compiled with optimization - stepping may behave oddly; variables may not be availabl
  3. 运行supervisorctl错误提示【FATAL或BACKOFF 】Exited too quickly (process log may have details)问题总结
  4. Ubuntu18.04上传文件夹到github
  5. mysql批量添加空行_MySQL加入空行
  6. 微信小程序开发常见问题解答
  7. pdf是图片还是文档
  8. 框架学习(1)——service层,dao层和service实现类进行数据库操作
  9. 2018浙大408考研经验(划掉)个人口胡 普通一本+二战(伪)+小跨吧大概
  10. 数独解法-变形数独(第一讲:介绍)