微信网页授权

今天看一下微信网页授权前端要做的

一、首先判断是否在微信中打开的网页

var ua = navigator.userAgent.toLowerCase();
      if(ua.match(/MicroMessenger\/[0-9]/i)){
        this.wechatMeth()
      }else{
          // this.initView()
          console.log("不是微信");
      }

注:微信网页开发可以在微信开发者工具中进行调试

输入链接回车就好
在这里插入图片描述

二、判断链接是否包含code,如果没有,说明微信未授权

、判断链接是否包含code,如果没有,说明微信未授权,我们需要重定向来授权,我这边是静默授权

授权之后的连接格式: https://zxxxxxxx.ssxxxxx.cn/questionnaire/?code=031lzk0w3dmvxddddu1w3OZ3ZS1lzk0b&state=STATE#/?id=10259521790009644635

后面携带的id是重定向的id

这边后端的朋友返回了重定向的路径,当然前端也可以自己拼接,我们后端小朋友给力
官方地址
重定向也就是重新打开页面
window.location.href = res

 let code = this.GetUrlParame("code");
        if (!code) {
          utils.requestGet(api.codeUrl,location.href).then(res=>{ 
            console.log("res",res);
            window.location.href = res
            console.log("地址信息",res);
           })
        }
        else{ 
          console.log("已有code",code);
          this.code = code
          this.initView()
        }

GetUrlParame获取code的方法

// 截取code
    GetUrlParame(parameName) {
      /// 获取地址栏指定参数的值
      /// <param name="parameName">参数名</param>
      // 获取url中跟在问号后面的部分
      var parames = window.location.search;
      // 检测参数是否存在
      if (parames.indexOf(parameName) > -1) {
        var parameValue = "";
        parameValue = parames.substring(
          parames.indexOf(parameName),
          parames.length
        );
        // 检测后面是否还有参数
        if (parameValue.indexOf("&") > -1) {
          // 去除后面多余的参数, 得到最终 parameName=parameValue 形式的值
          parameValue = parameValue.substring(0, parameValue.indexOf("&"));
          // 去掉参数名, 得到最终纯值字符串
          parameValue = parameValue.replace(parameName + "=", "");
          return parameValue;
        }
        return "";
      }
    },

三,有code之后,保存code,传给后端,获取身份信息即可

在这里插入图片描述

四、链接携带参数的情况

我的vue项目是hash模式的,如http://192.168.1.166:8080/#/

这里举例子,一般来说放在服务器调试好一点,本地授权调试我还没试过,so,为了不麻烦发布的童鞋,我学习了xshell自己发布测试
假如你的地址是http://192.168.1.166:8080/#/?id=123
重定向之后的链接就是
http://192.168.1.166:8080/?code=031lzk0w3dmvxddddu1w3OZ3ZS1lzk0b&state=STATE#/?id=123
这边获取id的方法如下


    getId() {
      var parames = window.location.href
      console.log('parames', parames)
      // 检测参数是否存在
      var parameValue = ''
      if (parames.indexOf('id') > -1) {
        parameValue = parames.substring(parames.indexOf('id'), parames.length)
        // 检测后面是否还有参数
        if (parameValue.indexOf('&') > -1) {
          // 去除后面多余的参数, 得到最终 "id"=parameValue 形式的值
          parameValue = parameValue.substring(0, parameValue.indexOf('&'))
          // 去掉参数名, 得到最终纯值字符串
          parameValue = parameValue.replace('id' + '=', '')
          return parameValue
        }
        // 问卷id
        this.id = parameValue.replace('id=', '')
      }
    },
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值