链接:qydev.weixin.qq.com/wiki/index.…
1.导入依赖包
npm install weixin-js-sdk
复制代码
2.判断是否是在微信浏览器中
env.js
<script>
var ua = navigator.userAgent.toLowerCase();
var isWeixin = ua.indexOf('micromessenger') != -1;
var isAndroid = ua.indexOf('android') != -1;
var isIos = (ua.indexOf('iphone') != -1) || (ua.indexOf('ipad') != -1);
if(!isWeixin) {
document.head.innerHTML = '<title>抱歉,出错了</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0"><link rel="stylesheet" type="text/css" href="https://res.wx.qq.com/open/libs/weui/0.4.1/weui.css">';
document.body.innerHTML = '<div class="weui_msg"><div class="weui_icon_area"><i class="weui_icon_info weui_icon_msg"></i></div><div class="weui_text_area"><h4 class="weui_msg_title">请在微信客户端打开链接</h4></div></div>';
}
复制代码
在main.js中引用:
import env from "./env";//运行环境
复制代码
微信登录,通过code换取openid,在起始页使用该方法:
<script>
methods:{
// 微信登陆
wxLogin() {
var that = this;
axios
.get("/common/loginAuth")
.then(function(res) {
console.log("后台返回的链接地址", res.data);
window.location.href = res.data;//跳转后台返回的链接地址
})
.catch(function(error) {});
},
//换取用户信息
postCode(res) {
var that = this;
axios
.post("/common/getUserInfo", {
code: res
})
.then(function(res) {
cookie.set("openid", res.data.openid);//code像后台换取openid并存入
})
.catch(function(error) {
console.log(error);
});
}},
created() {
var r = window.location.href;//获取当前链接,拆分当前链接
//当前链接地址为后台返回的参数,有拆分得到链接中的code,通过postCode()方法获取openid,没有则通过wxLogin()方法开始微信登录
if (r.indexOf("?") != -1) {
r = r.split("?");
r = r[1].split("&");
r = r[0].split("=");
r = r[1];
} else {
this.wxLogin();
}
if (r) {
this.postCode(r);
} else {
this.wxLogin();
}
},
</script>
复制代码
3.前端页面使用
import wx from 'weixin-js-sdk'
this.axios({
method: 'post',
url: 'url',
data:{ url:location.href.split('#')[0] } //向服务端提供授权url参数,并且不需要#后面的部分
}).then((res)=>{
wx.config({
debug: true, // 开启调试模式,
appId: res.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
timestamp: res.timestamp, // 必填,生成签名的时间戳
nonceStr: res.nonceStr, // 必填,生成签名的随机串
signature: res.signature,// 必填,签名,见附录1
jsApiList: ['scanQRCode'] // 必填,需要使用的JS接口列表,所有JS接口列
});
})
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END