使用sdk方式获取微信的用户信息

摘要:
1、 波姆。xml依赖关系<dependency><groupId>com。github。binarywang</groupId><artifactId>weixin java mp</artifactId><version>2.7.0</version></dependency>II。应用yml配置微信:mpAppId:wx6beb2249b6c***(appID)mp

一、pom.xml 依赖

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

二、application.yml配置

wechat:
  mpAppId: wx6beb2249b6c*****(appID)
  mpAppSecret: 9138282d930eb7ee7f7a59*******(appsecret)

三、从application.yml中获取配置信息

@Data
@Component
@ConfigurationProperties(prefix = "wechat")
public class WechatAccountConfig {

    /**
     * 公众平台id
     */
    private String mpAppId;

    /**
     * 公众平台密钥
     */
    private String mpAppSecret;
}

四、配置微信参数信息

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 {

    @Autowired
    private WechatAccountConfig accountConfig;

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

    @Bean
    public WxMpConfigStorage wxMpConfigStorage() {
        WxMpInMemoryConfigStorage wxMpConfigStorage = new WxMpInMemoryConfigStorage();
        wxMpConfigStorage.setAppId(accountConfig.getMpAppId());
        wxMpConfigStorage.setSecret(accountConfig.getMpAppSecret());
        return wxMpConfigStorage;
    }
}

 五、微信授权接口

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 com.liuhq.config.ProjectUrlConfig;
import com.liuhq.enums.ResultEnum;
import com.liuhq.exception.SellException;

import java.net.URLEncoder;


@Controller @RequestMapping(
"/wechat") @Slf4j public class WechatController { @Autowired private WxMpService wxMpService; @Autowired private ProjectUrlConfig projectUrlConfig; @GetMapping("/authorize") public String authorize(@RequestParam("returnUrl") String returnUrl) { //1. 配置 //2. 调用方法 String url = http://域名 + "/wechat/userInfo"; String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAUTH2_SCOPE_BASE, URLEncoder.encode(returnUrl)); return "redirect:" + redirectUrl; } @GetMapping("/userInfo") public String userInfo(@RequestParam("code") String code, @RequestParam("state") String returnUrl) { WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken(); try { wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null); //微信用户信息 }
catch (WxErrorException e) { log.error("【微信网页授权】{}", e); throw new SellException(ResultEnum.WECHAT_MP_ERROR.getCode(), e.getError().getErrorMsg()); } String openId = wxMpOAuth2AccessToken.getOpenId(); //获取openId return "redirect:" + returnUrl + "?openid=" + openId; } }

免责声明:文章转载自《使用sdk方式获取微信的用户信息》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Quaternion:通过API对Quaternion(四元数)类中的方法属性初步学习总结(二)matlab绘图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

1.kafka

什么是Kafka 1.Apache Kafka是一个开源消息系统,由Scala写成。 2.Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。 3.无论是kafka集群,还是cons...

HiveSQL 数据定义语言(DDL)

第一章、数据定义语言(DDL)概述 1.1 DDL语法的作用 数据定义语言 (Data Definition Language, DDL),是SQL语言集中对数据库内部的对象结构进行创建,删除,修改等的操作语言,这些数据库对象包括database(schema)、table、view、index等。核心语法由CREATE、ALTER与DROP三个所组成。D...

Postgresql数据库的一些字符串操作函数(转)

今天做项目遇到客户反映了一个麻烦的事情,有一些数据存在,但就是在程序中搜索不出来,后来分析,发现问题为数据前面有几个空白字符,后来用SQL 查询了一下,发现八九个数据表中,数千万条数据中有将近三百万条数据存在相同的问题,本想着在查询时添加匹配符'%',后来试运行了一下,发现不可行,因 为尚有很多其它页面存在类似的搜索问题,并且这样会极大地影响到查询的速度,...

国密算法Java代码的标准实现

   前一阵子做的项目,越来越多的金融类应用使用国密算法进行加解密的运算。     国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。     SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。     SM2为非对称加密,基于ECC。该算法已公开...

如何把一段逗号分割的字符串转换成一个数组?

如果不查jdk api,我很难写出来!我可以说说我的思路: 1 用正则表达式,代码大概为:String [] result = orgStr.split(“,”); 2 用 StingTokenizer ,代码为:StringTokenizer tokener = StringTokenizer(orgStr,”,”); String [] result...

C#字符串和ASCII码的转换

C# 字符转ASCII码,ASCII码转字符 //字符转ASCII码:public static int Asc(string character) {if (character.Length == 1) { System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEnco...