微信公众号授权突破微信开放平台只能配置两个的限制

参考链接:https://github.com/HADB/GetWeixinCode

大致思路:让微信授权配置到同一个域名下进行访问
打开上面的链接,下载文件到某个域名(b域名)下,然后在要授权的地方点击访问文件下的get-weixin-code.html文件
这样就做到微信开放平台只能配置两个的限制了 但是会出现回退时一直卡在授权地方,所以我把代码做了以下改动

点击授权地方的链接设置:

// scope根据需要设置 redirect_uri回调路由(具体参考微信文档,授权需要配置信息)
window.location.href = b域名 + '/GetWeixinCode-master/get-weixin-code.html?appid=' + appId + '&scope=snsapi_userinfo&state=getUserBack&redirect_uri=' + url

get-weixin-code.html.html(只贴出了修改的地方,其余的不用动)

 <script>
      doRedirect: function () {
        var code = GWC.urlParams['code'];
        var appId = GWC.urlParams['appid'];
        var scope = GWC.urlParams['scope'] || 'snsapi_base';
        var state = GWC.urlParams['state'];
        var isMp = GWC.urlParams['isMp']; //isMp为true时使用开放平台作授权登录,false为网页扫码登录
        var baseUrl;
        var redirectUri;

        // 判断从授权成功后跳转的页面返回
        if (localStorage.getItem('user_code_status') == 2) {
          urlBack()
          return
        }
        var user_code_status = localStorage.getItem('user_code_status')
        if (!code) {
          // 没有点授权回退
          if (user_code_status && user_code_status != 0) {
            urlBack()
            return
          }
          baseUrl = "https://open.weixin.qq.com/connect/oauth2/authorize#wechat_redirect";
          if (scope == 'snsapi_login' && !isMp) {
            baseUrl = "https://open.weixin.qq.com/connect/qrconnect";
          }
          //第一步,没有拿到code,跳转至微信授权页面获取code
          redirectUri = GWC.appendParams(baseUrl, {
            'appid': appId,
            'redirect_uri': encodeURIComponent(location.href),
            'response_type': 'code',
            'scope': scope,
            'state': encodeURIComponent(state),
          });
          localStorage.setItem('user_code_status', 1);
        } else {
          //第二步,从微信授权页面跳转回来,已经获取到了code,再次跳转到实际所需页面
          redirectUri = GWC.appendParams(GWC.urlParams['redirect_uri'], {
            'code': code,
            'state': encodeURIComponent(state)
          });
          localStorage.setItem('user_code_status', 2);
        }
        window.location.href = redirectUri;
      }
    };

    GWC.getUrlParams();
    GWC.doRedirect();

    // 回退方法(activity.html为需要回退的页面)
    function urlBack() {
      var urlCan = GWC.urlParams['redirect_uri']
      var urlstr = urlCan.split('/')
      if (urlstr[2]) {
        var urls = urlstr[0] + '//' + urlstr[2]
        window.location.replace(urls + '/activity.html' ));
        localStorage.removeItem('user_code_status')
      }
    }
  </script>

同时需要在下载的GetWeixinCode文件增加一个页面(我这边定义为index.html)用来清localStorage,放在点击授权的页面引用

点击授权的页面增加一个窗口:

html:
<iframe src="" frameborder="0" style="width: 0;height:0" id="iframe"></iframe>

js:
$('#iframe').attr('src', b域名+ '/GetWeixinCode-master/index.html')

index.html:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title></title>
</head>

<body>
  <script>
   localStorage.removeItem('user_code_status')
  </script>
</body>
</html>

又熬了个通宵!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信公众号网页授权登录是指在微信公众号中,用户点击菜单或链接后,通过授权登录获取用户信息的过程。根据微信公众号官方文档,在开发微信公众号的网页时,需要仔细观看文档中关于网页授权回调域名的说明、网页授权的两种scope的区别说明以及关于网页授权access_token和普通access_token的区别等内容。 微信公众号的网页授权登录主要分为以下几个步骤: 1. 用户点击菜单或链接后,进入微信公众号网页授权登录页面。 2. 用户在该页面中进行授权操作,微信公众号会跳转到授权回调域名中的指定页面,并携带授权的code参数。 3. 开发者可以根据获取的code参数,调用微信接口获取用户的access_token和openid等信息。 4. 开发者可以使用获取的用户信息进行业务逻辑的操作,例如展示个人中心、发送消息等。 需要注意的是,在开发过程中,需要配置微信公众号后台的路径和授权回调域名等信息,以确保页面的正确展示和接口的正常调用。 与小程序相比,微信公众号更加侧重于营销,而小程序则更像是一个微型的APP程序,用于和用户进行交互。 总结起来,微信公众号网页授权登录是通过微信公众号中的授权机制,获取用户信息并进行业务操作的过程。开发者需要仔细阅读微信公众号官方文档,了解网页授权的相关操作和配置要求,以确保功能的正常运行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [微信公众号网页授权登录](https://blog.csdn.net/qq_41971087/article/details/82593830)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [uni-app微信公众号(1)——网页授权登录](https://blog.csdn.net/qq_40601005/article/details/121028141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值