由于工作项目的原因,需要使用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项目一样的处理就可以了。

vue开发微信公众号--开发准备的更多相关文章

  1. vue+node.js+webpack开发微信公众号功能填坑——v -for循环

    页面整体框架实现,实现小功能,循环出数据,整体代码是上一篇 vue+node.js+webpack开发微信公众号功能填坑--组件按需引入 修改部门代码 app.vue <yd-flexbox&g ...

  2. vue+node.js+webpack开发微信公众号功能填坑——组件按需引入

    初次开发微信公众号,整体框架是经理搭建,小喽喽只是实现部分功能,整体页面效果 整个页面使用两个组件:布局 FlexBox,搜索框 Search,demo文档 http://vue.ydui.org/d ...

  3. 使用vue开发微信公众号下SPA站点的填坑之旅

    原文发表于本人博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅.作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^ ...

  4. Vue开发微信公众号默认背景为灰色

    最近公司有一个项目,使用Vue开发微信公众号,开发过程遇到一个问题,即设计图的整体背景是白色的,但是公众号里默认的背景是浅灰色,如果某个页面高度没能占满一屏,就会露出浅灰色的默认背景,会显得很不协调. ...

  5. vux+vuex+vue+Es6开发微信公众号的坑

    初次开发微信公众号遇到很多问题,可能是基础不怎么牢靠,最近几天一直在看vue的东西,现在就来慢慢介绍vux和vue这个骚东西的用法: 细看文档一步步来, npm install vux --save ...

  6. 微信公众号开发C#系列-12、微信前端开发利器:WeUI

    1.前言 通过前面系列文章的学习与讲解,相信大家已经对微信的开发有了一个全新的认识.后端基本能够基于盛派的第三方sdk搞定大部分事宜,剩下的就是前端了.关于手机端的浏览器的兼容性问题相信一直是开发者们 ...

  7. 微信公众号开发(一)--验证服务器地址的Java实现

    现在主流上都用php写微信公众号后台,其实作为后端语言之一的java也可以实现. 这篇文章将对验证服务器地址这一步做出实现. 参考资料:1.慕课网-<初识java微信公众号开发>,2.微信 ...

  8. NodeJs 开发微信公众号(四)微信网页授权

    微信的网页授权指的是在微信公众号中访问第三方网页时获取用户地理.个人等信息的权限.对于开发了自己的网页app应用时,获取个人的信息非常重要.上篇博客讲到了注册时可以获取用户的信息,很多人会问为什么还需 ...

  9. 用java开发微信公众号:公众号接入和access_token管理(二)

    本文为原创,原始地址为http://www.cnblogs.com/fengzheng/p/5027630.html 上一篇说了微信开发的准备工作,准备工作完成之后,就要开始步入正题了.其实微信公众号 ...

随机推荐

  1. JS-DOM Event

    DOM Level 0 Events:绑定到 DOM 的属性上,找不到官方文档 DOM0 是在 W3C 进行标准备化之前出现的,实际上是未形成标准的试验性质的初级阶段的 DOM. var tdiv = ...

  2. day21—AngularJS学习初体验

    转行学开发,代码100天——2018-04-06 今天按照学习计划安排,开始AngularJS的学习. 关于AngularJS,在菜鸟教程上这样介绍 好吧,Angular学习起来非常简单,哈哈,现在就 ...

  3. python 微服务方案

    介绍 使用python做web开发面临的一个最大的问题就是性能,在解决C10K问题上显的有点吃力.有些异步框架Tornado.Twisted.Gevent 等就是为了解决性能问题.这些框架在性能上有些 ...

  4. vue实现ajax请求(vue-resource和axios)

    1.vue-resouce实现ajax请求 vue1中主要用vue-resouce实现ajax请求, 2.1 引用vue-resouce 引入axios,直接在index.html文件中引入; 或者在 ...

  5. Java基础复习(1)

    1. Java 基本数据类型 参考博客: https://www.cnblogs.com/LiaHon/p/11043238.html Java语言提供了八种基本类型. 六种数字类型(四个整数型,两个 ...

  6. 在Linux下将HTML文件转换成PDF文件

    今天要写一个上交的作业,本来是想用Office Word来写的,但是,我的Office貌似不能用了,但是,Linux下的LibreOffice写出的文档,在打印的时候是经常出现乱码的.所以,后来想到可 ...

  7. [fw]Understanding a Kernel Oops!

    An “Oops” is what the kernel throws at us when it finds something faulty, or an exception, in the ke ...

  8. 那些年很脑残的bugs

    1.老师给了前端界面,我们用java写后台. 我改了表单form的action属性,让它跳到自己写的servlet上面去.自己在servlet里面对数据库一顿操作猛如虎,然后让servlet跳回原来页 ...

  9. CodeChef A String Game(SG)

    A String Game   Problem code: ASTRGAME   Submit All Submissions   All submissions for this problem a ...

  10. 开源企业IM-免费企业即时通讯-ENTBOOST V2014.183 Linux版本号正式公布

    版权声明:本文为博主原创文章,欢迎转载,转载请尽量保持原文章完整,谢谢! https://blog.csdn.net/yanghz/article/details/37807975 ENTBOOST, ...