微信JSSDK授権互換iosとandroid

1775 ワード

一、公共の方法を抽出する
wxConfig.js
/*
 *     IOS  
 * */
import http from "./http";       //         
import wx from "weixin-js-sdk";
export function isIOS() {
  let isIphone = navigator.userAgent.includes("iPhone");
  let isIpad = navigator.userAgent.includes("iPad");
  return isIphone || isIpad;
}
/*
*       ,        
* */
export function requestWxStr() {
    http
    .get("/Message/getJsSdkConfig", {
      appId: "wx91e01031621·····",       //     id
      url: location.href.split("#")[0]   //    
    })
    .then(res => {
      if (res.successful) {
        wx.config({
          debug: false,
          appId: res.data.appId, //   ,        
          timestamp: res.data.timestamp, //   ,        
          nonceStr: res.data.noncestr, //   ,        
          signature: res.data.signature, //   ,  
          jsApiList: ["scanQRCode"] //   ,     JS    
        });
      }
    });
}

二、プロジェクトのmain.jsでルーティング・ガードによって判断する設備は、iosのものであり、初期のルートwx.com figである。
mail.js
import {isIOS,requestWxStr} from './uils/wxConfig' //         

router.beforeEach((to, from, next) => {
  if (isIOS()) {  //   ios         wx.config
    if (from.path === '/') {
      requestWxStr() //        wx.config
    }
  }
  next();
});
三、wx機能を呼び出したコンポーネント判定装置で、androidであるのはこのコンポーネント内でwx.com figである。
呼び出し機能のコンポーネント
import { isIOS, requestWxStr } from "../uils/wxConfig";

export default {
    mounted() {
    this.init();
  },
  methods: {
    //     
    init() {
      if (!isIOS()) {
        requestWxStr();
      }
    },
}
四、まとめ
iosでwx.co nfigを行うときは、毎回のアドレスが最初のアドレスです。最初に入るときは権限検証を行います。いいえの場合は認証に失敗します。この問題はアンディには存在しません。