vue開發微信公眾號--開發准備


由於工作項目的原因,需要使用vue開發微信公眾號,但是這種微信公眾號更多是將APP套了一個微信的殼子,除了前面的授權和微信有關系以外,其他的都和微信沒多大的關系了,特此記錄

開發流程

首先需要在電腦上安裝微信web開發者工具和花生殼(內網穿透),然后有一個微信公眾平台的賬號

第一步:

下載安裝花生殼,點擊內網穿透

然后會在瀏覽器中打開下面這個界面

這里需要注意的是外網訪問地址和內網主機地址。

第二步:

登錄微信公眾平台后,滾動頁面到最下面,點擊開發下面的開發者工具。

然后選擇公眾平台測試賬號,會新打開一個測試號管理的頁面

在測試號管理頁面,需要修改兩個地方,將地址換成第一步中的外網訪問地址:

第一個:

第二個(此時不需要前面的http://):

除了修改上面兩個地方以外,作為測試號,還需要將當前頁面前面的測試號信息發給后台

現在,前台的基本配置已經完成了。

 項目配置

第一步:

首先需要創建項目,和創建其他的vue項目一模一樣,直接使用腳手架創建就可以了。

項目創建完成后,需要安裝微信的SDK:npm install weixin-js-sdk --save

另外,由於vue項目默認是使用localhost打開的,但是這樣是微信公眾號,需要在微信web開發者工具中打開,所以需要更改為通過ip訪問:

打開根目錄下的config/index.js,修改文件內dev里面的host和port

這里的地址應該是電腦的IP,端口是可以自定義的,修改完成后,需要修改第一步花生殼中的那個內網主機,讓兩者保持一致。

現在,啟動項目,在瀏覽器中輸入192.168.0.3:8080如果可以打開項目的話,那么項目創建就沒有問題了。

由於使用花生殼穿透以后,192.168.0.3:8080對應的就是花生殼里面的外網訪問地址,所以打開微信web開發者工具,輸入穿透后的外網訪問地址,也是可以打開項目的。

第二步:

在進行授權前,需要獲取code,然后通過code去到后台換取openID。由於在本項目中采用的是強制授權,分別寫了兩個頁面:login和getCode用於進行授權:

login.vue是項目的默認顯示頁面

<template>
  <div class="hello"></div>
</template>

<script>
import * as sessiondate from '../service/staticData'
import { Indicator } from 'mint-ui';
import { mapMutations,mapState } from 'vuex'
export default {
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
  created(){
     window.location.href=sessiondate.weixin;
  },
  methods: {}
}
</script>
<style scoped>
</style>

其中的sessiondate.weixin是自己配置的。

staticData.js

export const weixin='https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx503236dfa82f2a64&redirect_uri=http%3A%2F%2F2ir3745783.zicp.vip%2f%23%2fgetCode&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect'

其中appid=wx503236dfa82f2a64是測試號管理中的appId,redirect_uri=http%3A%2F%2F2ir3745783.zicp.vip%2f%23%2fgetCode則表示的是獲取code的頁面,也就是上面說的getCode.vue這個頁面的訪問路徑,然后通過了轉碼。

當項目啟動,進入login頁面后,就會自動執行生命周期函數里面的代碼,頁面就會跳轉到getCode.vue頁面。

getCode.vue

<template>
  <div class="hello"></div>
</template>

<script>
import * as apidate from "../service/api";
import { Indicator } from "mint-ui";
import { mapMutations, mapState } from "vuex";
export default {
  data() {
    return {
      msg: "Welcome to Your Vue.js App"
    };
  },
  created() {
    // 'snake'、'fading-circle'、'double-bounce'、'triple-bounce'
    Indicator.open({
      text: "Loading...",
      spinnerType: "triple-bounce"
    });
    this.Code();
  },
  methods: {
    getQueryString(name) {
      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
      var r = window.location.search.substr(1).match(reg);
      if (r != null) return unescape(r[2]);
      return null;
    },
    Code() {
      this.$store.commit("changeToken", null);
      this.$store.commit("changeCode", this.getQueryString("code"));
      this.axios
        .get(apidate.getOpenId1 + "?code=" + this.getQueryString("code"))
        .then(res => {
          if (res.data.msg == "bind") {
            Indicator.close();
            this.$store.commit("changeOpenId",res.data.data);
            this.$router.push("bind");
          } else if (res.data.msg == "newtoken") {
            this.$store.commit("changeToken", res.data.data.token.access_token);
            this.$store.commit("changeUserInfo", res.data.data.user);
            this.$store.commit("changeOpenId",res.data.data.user.openId);
            Indicator.close();
            this.$router.push("home");
          }
        })
        .catch(err => {});
    }
  }
};
</script>

<style scoped>
</style>

路由跳轉到這個頁面后,地址欄里面就會帶有code,我們需要拿到這個code,然后去后台換取openid和其他的信息。由於這個過程需要時間,因此在頁面進入時,默認顯示一個加載圈。

 

獲取code

通過code去后台換取openID

前面兩行是為了存數據的,暫時可以不用看,這里主要是拿到code以后,去后台換取openID,然后根據后台的返回,判斷頁面跳轉(我們公司做了一個用戶綁定,所以后台會根據這個接口判斷當前用戶是否進行了綁定:如果已經綁定,則直接跳轉到內容主頁面;如果沒有綁定,則跳轉到用戶綁定頁面)

 完成了授權以后,后面的就和常規的vue項目一樣的處理就可以了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM