微信有sdk吗(使用SDK方式进行微信授权)

1.在pom.xml中添加依赖

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

2.输入网址:https://github.com/Wechat-Group/WxJava/wiki,

微信有sdk吗(使用SDK方式进行微信授权)(1)

点开第一个,进入以下页面。并选择OAuth2网页授权。

微信有sdk吗(使用SDK方式进行微信授权)(2)

3,写Controller文件

4.写配置文件:WxMpService 是一个接口,接口是一个特殊的类,也可以用new关键字后面跟他的实现类WxMpServiceImpl 创建对象wxMpService,

WxMpConfigStorage是对象WxMpService的属性。appId,Secret是 wxMpConfigStorage的属性

微信有sdk吗(使用SDK方式进行微信授权)(3)

wxMpConfigStorage是一个接口,wxMpInMemoryConfigStorage是它的实现类。new出的对象wxMpConfigStorage是代表微信公众账号的类。

他的属性就是微信公众账号的属性。包括appId,Secret.

微信有sdk吗(使用SDK方式进行微信授权)(4)

微信有sdk吗(使用SDK方式进行微信授权)(5)

4。在配置文件中application.yml配置

微信有sdk吗(使用SDK方式进行微信授权)(6)

5.(1)写一个与“微信账号相关的配置类”取名叫:WechatAccountConfig(自定义),@Data注解的使用可简化代码,不必写set和get方法。

@component和@ConfigurationProperties是注入config的两个不可缺少的注解。下图只展示了appId(公众平台id)和mpAppSecret(公众平台密匙)两个属性,

其实还有openAppId(开放平台Id), openAppSecret(开放平台密匙)等与微信账号相关的一些属性。

微信有sdk吗(使用SDK方式进行微信授权)(7)

(2)使用WechatAccountConfig,注意:@Autowired注解的使用代替了 WechatAccountConfig accountConfig=new WechatAccountConfig.(使用new关键字创建实例)

(3)wxMpConfigStorage.setAppId(accountConfig.getMpAppId);//将微信公众号的属性赋给wxMpConfigStorage的意义是便于在控制台显示输出结果。

wxMpConfigStorage是一个返回值,类似于一个盒子里面包装了各种属性。

(4)因为不同的appId对应于不同的openid.,例mpAppId(微信公众平台)和openAppId(微信开放平台)对应的openId是不同的,写WechatMpConfig配置的目的是将appId赋值给wxMpService,让它知道 要获取哪个appId的openAppId,再获取openId。

wxMpOAuth2AccessToken=wxMpService.oauth2getAccessToken(code);

String openId=wxMpOAuth2AccessToken.getOpenId();

微信有sdk吗(使用SDK方式进行微信授权)(8)

微信有sdk吗(使用SDK方式进行微信授权)(9)

6.

构造网页授权url

首先构造网页授权url,然后构成超链接让用户点击:

WxMpService wxMpService = ...; String url = ...; String redirectUrl=wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null) redirect_uri(redirectUrl)是用户授权后重定向的回调链接地址,即引导用户在微信中点击的地址,url是参数,wxMpService通过方法oauth2buildAuthorizationUrl将url赋给redirectUrl

获得access token

当用户同意授权后,会回调所设置的url并把authorization code传过来,然后用这个code获得access token,其中也包含用户的openid等信息

WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code); //

获得用户基本信息

WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null); 代码如下所示:

微信有sdk吗(使用SDK方式进行微信授权)(10)

controller层的代码说明:

1.redirectUrl是用户授权后重定向的回调链接地址,即引导用户在微信中点击的地址,url和returnUrl是参数,wxMpService通过方法oauth2buildAuthorizationUrl将url和returnUrl

赋给redirectUrl,例:http://127.0.0.1/sell/wechat/authorize?returnUrl=www.imooc.com,这就是一个redirectUrl,其中url=http://127.0.0.1/sell/wechat/authorize 也可以使用外网地址:url=http://sell/natapp4.cc/sell/wechat/authorize,这里的returnUrl是慕课网的地址,也可以写其他网站的地址。程序员根据需要传参。 因此redirectUrl,url和returnUrl是完全不同的概念。

2.String redirectUrl=wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, returnUrl)

参数state的是我们传递什么,就会回传什么,由于我们传递的参数是returnUrl,所以要把returnUrl回传过来,使用 urlEncoder 对returnUrl链接进行处理.

例当用户点击:http://127.0.0.1/sell/wechat/authorize?returnUrl=www.imooc.com,成功进入后,地址栏就会反馈给我们一个地址:

www.imooc.com?openId=......(returnUrl被回传)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页