从0开始微信授权:SDK

获取SDK:

https://github.com/Wechat-Group/WxJava

在这里插入图片描述
这里用的是公众号(包括订阅号和服务号):weixin-java-mp
在这里插入图片描述
来看wiki文档
在这里插入图片描述
当然是第一个

点击第五个,使用OAuth2

https://github.com/Wechat-Group/WxJava/wiki/MP_OAuth2%E7%BD%91%E9%A1%B5%E6%8E%88%E6%9D%83

在这里插入图片描述

开始搞起

@RequestMapping("/wechat")
@Controller
public class WechatController {
    @Autowired
    private WxMpService wxMpService;
@GetMapping("/authorize")
    public  String  authorize(@RequestParam("returnUrl") String returnUrl){

//    config success.................................
    String url="https://van.mynatapp.cc/wechat/userInfo";
   String redirectUrl= wxMpService.oauth2buildAuthorizationUrl(url,WxConsts.OAuth2Scope.SNSAPI_USERINFO,returnUrl);
   return "redirect:"+redirectUrl;
}
@GetMapping("userInfo")
    public  String  userInfo(@RequestParam("code") String code,
                          @RequestParam("state") String returnUrl) throws  Exception{

    WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
    String openId=wxMpOAuth2AccessToken.getOpenId();
    return "redirect:"+returnUrl+"?openId="+openId;

}
}

controller如上所示
private WxMpService wxMpService 这个类如下配置:

@Component
public class WxMpConfig {
    @Bean
    public WxMpService wxMpService(){
        WxMpService wxMpService=new WxMpServiceImpl();
        WxMpConfigStorage mpConfigStorage=new WxMpDefaultConfigImpl();
        ((WxMpDefaultConfigImpl) mpConfigStorage).setAppId("wx2bab612e8aa186cc");
        ((WxMpDefaultConfigImpl) mpConfigStorage).setSecret("a29535300bbf29494acb9d6204009c78");
        wxMpService.setWxMpConfigStorage(mpConfigStorage);
        return wxMpService;
    }
}

测试:https://van.mynatapp.cc/wechat/authorize?returnUrl=https://www.baidu.com
ok
总结:

大流程

先访问我controller中的/wechat/authorize方法,在方法内构造一个url,重定向这个url(相当于wx官方文档里的构造一个url让用户点击),于是到我@GetMapping(“userInfo”)方法里来了,并携带了code参数,在这个方法里用code参数获得用户的openId,最后在重定向到一开始携带的参数:returnUrl,也就是baidu.com

小流程

1.在@GetMapping("/authorize")方法内先对WxMpService这个类进行配置(填入测试号的appID和securityID)
2.调用String oauth2buildAuthorizationUrl(String redirectURI, String scope, String state);方法。 state是携带一个参数,scope是用户授权类型,一个是info,可获取用户更多的信息,但需要用户确定,一个是base,可获取用户少量信息,但不需要用户确定(神不知鬼不觉)。具体看微信开发文档,有这几个参数的详情:

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

3.在步骤2内我填入的是在这里插入代码片String url="https://van.mynatapp.cc/wechat/userInfo";
于是跳转到我controller内设置的第二个方法,在这个方法内

扫描二维码关注公众号,回复: 10027823 查看本文章
@RequestParam("code") String code,
                          @RequestParam("state") String returnUrl

我要获取2个参数,一个是code(用code获取用户的openId),第二个是state就是baidu.com,最后返回baidu.com和openId。

对了对手机端抓包可以用fiddler工具(windows)

发布了34 篇原创文章 · 获赞 0 · 访问量 620

猜你喜欢

转载自blog.csdn.net/weixin_44841849/article/details/104374611