鍍金池/ 問(wèn)答/HTML5  HTML/ config:invalid signature在IOS中報(bào)錯(cuò),安卓成功

config:invalid signature在IOS中報(bào)錯(cuò),安卓成功

為什么在安卓中生效在IOS中失?。?/p>

appId: process.env.APPID, // 必填,公眾號(hào)的唯一標(biāo)識(shí)
timestamp: timestamp, // 必填,生成簽名的時(shí)間戳
nonceStr: nonceStr, // 必填,生成簽名的隨機(jī)串nonceStr
signature: createSignature(timestamp, nonceStr), // 必填,簽名
jsApiList: ['getLocation', 'scanQRCode', 'closeWindow'] // 必填,需要使用的JS接口列表
scanQRCodeView() {
      var _this = this;
      //掃描二維碼點(diǎn)擊,調(diào)用掃碼
      weChatReady().then(() => {
        scanQRCode()
          .then(res => {
            console.log(res, "掃碼結(jié)果&&&&&&&&&");
            if (res.data.projectId && res.data.spaceId) {
              console.log("判斷成功");
              let samaoMatch = {
                projectId: res.data.projectId,
                spaceId: res.data.spaceId
              };
              console.log(res.data.projectId, "res.data.projectId");
              console.log(this, "UUUUUUUUUUUUUUUUUUUU");
              console.log(_this, "PPPPPPPPPPPPPPPPPPP");
              _this.$emit("scanMathc", samaoMatch);
            } else {
              Toast("無(wú)效二維碼");
              return; //都為空的話,是么都不做
            }
          })
          .catch(err => {
            Toast("掃碼失敗了");
            console.error(err);
          });
      });
回答
編輯回答
喜歡你

因?yàn)橛玫氖莢ue單頁(yè)spa,在單頁(yè)spa方面vue的history在iOS中頁(yè)面地址會(huì)始終為第一次進(jìn)入的鏈接地址。
而這里的授權(quán)會(huì)有一個(gè)獲取openId的過(guò)程,所以就會(huì)有在iOS中授權(quán)失敗的問(wèn)題。
解決思路:

將授權(quán)頁(yè)的地址鏈接利用vuex保存下來(lái),判斷機(jī)型,如果是iOS機(jī)型就將授權(quán)頁(yè)的鏈接參數(shù)發(fā)送給微信權(quán)限校驗(yàn)接口,最后返回的結(jié)果是成功。
let url = /(Android)/i.test(navigator.userAgent) ? location.href.split('#')[0] : process.env.BASE_URL + process.env.AUTHO_URI + '?code=' + tools.getStorage('code') + '&state=' + encodeURIComponent(tools.getStorage('state'));
2018年7月26日 19:05