<option id="tpnx7"><p id="tpnx7"><pre id="tpnx7"></pre></p></option>
<output id="tpnx7"></output>
<output id="tpnx7"><ruby id="tpnx7"></ruby></output>
    <output id="tpnx7"></output><acronym id="tpnx7"><button id="tpnx7"><div id="tpnx7"></div></button></acronym><code id="tpnx7"><menuitem id="tpnx7"></menuitem></code>

    首页 > 上网技巧 > 电脑小技巧 > Java微信SDK方式进行网页授权

    Java微信SDK方式进行网页授权

    时间:2019-03-10 16:35 作者:QQ地带 我要评论

    SDK作用:他已经把微信大部分功能都做好了,我们只需要进?#20449;?#32622;,再调用其方法就可以完成微信的一些功能开发。
     
    目前开源的微信公众号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.在项目中进?#20449;?#32622;,
     
    一般配置信息不会在项目代码中进?#20449;?#32622;,会统一做一个全局配置
     
    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?#23567;?/div>
    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 {
     
        @Autowired
        private WeChatAccountConfig weChatAccountConfig;
     
        //把你要实例化的对象转化成一个Bean,放在IoC容器中
        @Bean
        public WxMpService wxMpService() {
            WxMpService wxService = new WxMpServiceImpl();// 实际项目中请注意要保持单例,不要在每次请求时构造实例,具体可以参考demo项目
            wxService.setWxMpConfigStorage(wxMpConfigStorage());
            return wxService;
        }
     
        @Bean
        private WxMpConfigStorage wxMpConfigStorage() {
            WxMpInMemoryConfigStorage config = new WxMpInMemoryConfigStorage();
            config.setAppId(weChatAccountConfig.getMpAppId()); // 设置微信公众号的appid
            config.setSecret(weChatAccountConfig.getMpAppSecret()); // 设置微信公众号的app corpSecret
            return 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 {
        @Autowired
        private 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";//实际项目中,网站根目?#21152;?#35813;做一个全局配置,此处为了方便,直?#26377;?/div>
            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 token
            WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
            try {
                wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
            }catch (WxErrorException e){
                log.error("【微信网页授权】{}",e);
                throw new SellException(ResultEnum.WECHAT_MP_ERROR);//授权失败抛出异常,此方法同学们自行编写,若不会可删除此行。
            }
            //获取openId
            String openId = wxMpOAuth2AccessToken.getOpenId();
            log.info("openId={}",openId);
            return "redirect:" + returnUrl+"?openid="+openId;
        }
    }
     

    标签: 微信 java
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%

    Google提供的广告

    广东十分快乐开奖结果
    <option id="tpnx7"><p id="tpnx7"><pre id="tpnx7"></pre></p></option>
    <output id="tpnx7"></output>
    <output id="tpnx7"><ruby id="tpnx7"></ruby></output>
    <output id="tpnx7"></output><acronym id="tpnx7"><button id="tpnx7"><div id="tpnx7"></div></button></acronym><code id="tpnx7"><menuitem id="tpnx7"></menuitem></code>

    <option id="tpnx7"><p id="tpnx7"><pre id="tpnx7"></pre></p></option>
    <output id="tpnx7"></output>
    <output id="tpnx7"><ruby id="tpnx7"></ruby></output>
    <output id="tpnx7"></output><acronym id="tpnx7"><button id="tpnx7"><div id="tpnx7"></div></button></acronym><code id="tpnx7"><menuitem id="tpnx7"></menuitem></code>

    江苏11选5高频开奖结果查询结果 幸运赛车直播 2019两码中特期期准 黑龙江36选7开奖号码 新疆喜乐彩走势图带连线 广西十一选五开奖视频 秒速飞艇开奖结果查询 法国网球比分直播 年九龙特码玄机诗 时时彩4星选号 彩票开‘湖北30选5一 福彩3d规则5倍 福福建快三开奖结果 123六合图库大全官网 重庆快乐十分百度