Spring boot + WxJava 开发公众号 一

注意版本号 ~   

我这里的pom文件  可以参考~  只要对应好版本号即可

    <dependencies>
        <!-- spring boot web依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

        <!--微信公众号-->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>wx-java-mp-spring-boot-starter</artifactId>
            <version>3.6.0</version>
        </dependency>

    </dependencies>

 application.yml配置

 

server:
  #运行端口
  port: 8080
# 这里对应的公众号的配置 我这里使用微信测试号
wx:
  mp:
    app-id: appid
    secret: appsecret
    token: token
    aes-key: 这里无需配置

还是不懂是吗? 我自己配置的你们可以参考下~
wx:
  mp:
    app-id: wxed7bfxxxxxb4b86
    secret: c38406xxxxxx72966d287ccf46f050
    token: 9iIqaxxxxxxdpwMDqFLg4
    aes-key:

 这里自己百度: 微信公众号测试平台  然后用自己微信扫码登录进去就可以了

还是放个链接吧: https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login  (免得出门被人用麻袋套住)

 

我这里使用的是内网穿透工具  把本地的8080端口开放出去,让微信服务器那边能请求的到我这

接口配置信息

这个一直通过不了怎么办?????

这里通过不了的原因是微信服务器那边给您配置的URL发信息,您这边没有回应或者回应错误就不成功了

解决方法:

/**
 * @author Lucky winner
 * 微信服务器token验证
 */
@RestController
@RequestMapping("/wechat")
public class WechatCertificationTokenController {

    @Autowired
    private WxMpService wxMpService;

    /**
     * 接口配置信息
     * @param signature
     * @param timestamp
     * @param nonce
     * @param echostr
     * @return
     */
    @GetMapping("/login")
    public String login(String signature, String timestamp, String nonce, String echostr) {
        /*
        * 注意这里的参数配置顺序
        * timestamp, nonce, signature
        * 检查签名 
        * */
        if (!wxMpService.checkSignature(timestamp, nonce, signature)) {
            return null;
        }
        return echostr;
    }



}

 

 

接口配置信息的URL填写  http://您的域名/wechat/login

示范:http://uzawyvu.nat.xxxx.com/wechat/login

接口信息配置到这里也就结束了

内心对白: 就这就这就这??  这就完了?  我要获取用户登录的信息?我要跟xx公司一样把用户的信息玩弄于手掌中。

现实:想多了,微信就返回一段json数据给你,里面包含了用户的一般信息,比如昵称。头像。openid之类的

那来开搞,以上的配置都用好之后,其他的就好办了

第一步:

在微信公众号测试平台中找到这个网页账号,点击修改

 

 

无需加http:// 或 https://    (我也被坑过)

配置完成,开始掉头发 哦不  是写代码

@Controller
@RequestMapping("/wechat")
@Slf4j
public class WeChatGetUserInfoController {

    @Autowired
    private WxMpService wxMpService;



    @GetMapping("/getUserInfo")
    public void getUserInfo(HttpServletResponse response) throws IOException {
        //构造网页授权url
        String redirect_uri= "http://您的域名/wechat/getRedirectUserInfo";//回调的url
        String url = wxMpService.oauth2buildAuthorizationUrl(redirect_uri, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null);
        System.out.println("URL:" + url);
        response.sendRedirect(url);
//        return url;
    }

    /**
     * 网页授权
     * 1 第一步:用户同意授权,获取code
     * <p>
     * 2 第二步:通过code换取网页授权access_token
     * <p>
     * 3 第三步:刷新access_token(如果需要)
     * <p>
     * 4 第四步:拉取用户信息(需scope为 snsapi_userinfo)
     *
     * @param code
     * @return
     */
    @GetMapping("/getRedirectUserInfo")
    @ResponseBody
    public String getRedirectUserInfo(String code) throws WxErrorException, IOException {
        //1 第一步:用户同意授权,获取code
        log.info("返回code: {}", code);
        //2 第二步:通过code换取网页授权access_token
        WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
        //4 第四步:拉取用户信息(需scope为 snsapi_userinfo)
        WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken,null);
        log.info("获取到的用户信息: {}", wxMpUser.toString());
        }
        return wxMpUser.toString();
    }

}

可以了 ,有问题可以评论出来,只要看到而且我懂的就会回答

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值