微信网页授权

微信公众平台技术文档
1. 用户同意授权,获取code
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 参数说明

2 通过code换取网页授权access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 参数说明
正确时返回的JSON数据包如下:

{ "access_token":"ACCESS_TOKEN",    
 "expires_in":7200,    
 "refresh_token":"REFRESH_TOKEN",    
 "openid":"OPENID",    
 "scope":"SCOPE" } 

返回说明
错误时微信会返回JSON数据包如下(示例为Code无效错误):

{"errcode":40029,"errmsg":"invalid code"} 

案例

请求地址获取
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx59edf850079b7948&redirect_uri=http://ast.tunnel.qydev.com/wechat/login.action&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

/**
     * 入口
     */
    @RequestMapping("/login")
    public ModelAndView login(HttpServletRequest request) {
        logger.info(">>>>>>>>>>>>>>>>进入绑定页面>>>>>>>>>>>>>>>>");

        ModelAndView modelAndView = new ModelAndView();

        //        部署服务器开启
        String code = request.getParameter("code");
        logger.info("code为:{}", code);
        if (StringUtils.isBlank(code)) {
            logger.info("进来这人没code,有问题");
            modelAndView.addObject("openId", "");
            modelAndView.addObject("errorInfo", "openId为空");
            modelAndView.setViewName("/mobile/404");

            return modelAndView;
        }


        String openid = "";
        try {

            String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + ParamesAPI.appId+ "&secret=" + ParamesAPI.secret + "&code=" + code + "&grant_type=authorization_code";
            logger.info("url:{}", url);
            JSONObject result = HttpsClient.httpRequest(url, "GET", null);

            logger.info("获取openId的json:{}", result);
            openid = (String) result.get("openid");
            if (StringUtils.isEmpty(openid)) {
                logger.info("openid为空:{}", openid);
                /**
                 * 跳转错误页面
                 */
                modelAndView.setViewName("/mobile/404");
                return modelAndView;
            }
            request.getSession().setAttribute("openId", openid);

        } catch (Exception e) {
            logger.info("未知错误:{}", e);
            modelAndView.addObject("openId", "");
            modelAndView.addObject("errorInfo", "openId为空");
            modelAndView.setViewName("/mobile/404");
            return modelAndView;
        }

        modelAndView.setViewName("mobile/bindUser");

        return modelAndView;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值