微信公众号网页授权

1.用户同意授权,获取code

在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

redirect_uri:授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理且需要网页授权

code会在回调链接地址中拼接

例:https://hz.cnformulator.com/gzh/index.html?code=061vYnTj1WUCcp0CczUj1s8iTj1vYnTq&state=STATE

2.获取code之后,将code传给后台

function getRequest() {
            var url = location.search; //获取url中"?"符后的字串
            var theRequest = new Object();
            if (url.indexOf("?") != -1) {
                var str = url.substr(1);
                strs = str.split("&");
                for(var i = 0; i < strs.length; i ++) {
                    theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
                }
            }
            return theRequest;
        }
        let code = getRequest().code;
        let url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code='+code+'&grant_type=authorization_code'
        var oAjax = null;
        //这里进行HTTP请求
        try {
            oAjax = new XMLHttpRequest();
        } catch (e) {
            oAjax = new ActiveXObject("Microsoft.XMLHTTP");
        };
        //post方式请求,最后一个参数是是否异步请求
        oAjax.open('post', 'https://hz.cnformulator.com/api', true);
        //post相比get方式提交多了个这个
        oAjax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        //post发送数据和请求
        oAjax.send(`app=app&class=calss&sign=sign&code=${code}`);
        oAjax.onreadystatechange = function () {
            //当状态为4的时候,执行以下操作
            if (oAjax.readyState == 4 && oAjax.status == 200) {
                alert("授权成功")
                setTimeout('WeixinJSBridge.call("closeWindow")', 1500);
            };
        };

这里在将code传给后台1500毫秒后关闭微信内置浏览器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值