#### 微信扫码登录-内嵌版
1. 先引进wxLogin的cdn文件
~~~
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
~~~
#### 2.跳中间页来实现扫码登录:
例如在login.vue里面扫码登录,然后跳转到loginSuccess.vue(中间页),再跳转到主页面
2.1 在login.vue的代码如下:
~~~
// 在template的代码:
<div id="qrcode"></div>
// js
created () {
var obj = new WxLogin({
id: "qrcode",
appid: appID,
scope: "snsapi_login",
redirect_uri: "http%3A%2F%2Flaws.genesysinfo.net%3A8090%2F%23%2Floginsuccess",
state: "",
style: "black",
href: "data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7d2lkdGg6IDE4MHB4O21hcmlnbi10b3A6LThweH0KLmltcG93ZXJCb3ggLnRpdGxlIHtkaXNwbGF5OiBub25lO30KLmltcG93ZXJCb3ggLmluZm8ge2Rpc3BsYXk6IG5vbmU7fQ=="
});
}
~~~
键值说明:
1. Id: 是存放二维码的容器,
2. appid: 是开发者在微信开房平台提交申请后,获得appid和一个秘钥
3. scope: snsapi_login这个是代表网页版
4. redirect_uri: 这个是扫码后要跳转的页面,这个是要跳转到loginsuccess页面,这个路径要urlEncode转码的,转码地址为(http://tool.phpshuo.com/UrlEncode.html), **注意,要跳转的地址必须在申请的域名下面。**
5. style: 代表二维码的样式,有black和white可选,
6. href: 修改二维码的样式,要经过base64位转码,地址为(https://the-x.cn/base64/)。
2.2 在loginsuccess.vue的代码如下:
~~~
// js代码
created () {
let code=this.getUrlKey("code");
let state=this.getUrlKey("state");
this.getWeixin(code,state);
},
methods: {
// 公共方法
getUrlKey (name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null;
},
// 通过code获取微信信息
getWeixin(code,state){
util.ajax({
url:"url/userByCode?code=" + code,
data:''
})
.then((res)=>{
console.log(res.data)
})
.catch((err) => {
console.log(err)
})
},
}
~~~
3 在当前获取用户微信扫码登录的信息
~~~
// 这个代码等于 2.1 + 2.2 的代码
// 因为是在当前页面添加code的,界面没有刷新,只是添加参数,所以就必须监测路由参数的变化
watch: {
$route(){
if(this.$route.query.code!=undefined)
{
this.getWeixin(this.$route.query.code,this.$route.query.state);
}
}
}
~~~
- mui框架
- toast提示框的使用
- 星级评分
- 上拉刷新和下拉加载里超链接失效的原因
- confirm确认框的使用
- 取消下拉刷新和上拉加载的border
- 解决使用加载的方式捕捉不到dom
- css样式篇
- css3实现0.5像素的边框
- css3样式中的border-radius的圆角边框
- css面试篇之红色十字架
- css样式~~用图片模拟单选框radio的功能
- div设置绝对定位以后,文字实现居中
- 设置input里面字体颜色和大小
- js知识篇
- javascript篇~~九九乘法表
- js~跳转提示页面
- js~实现60秒倒计时
- 正则表达式之保留小数点后两位小数
- 数组操作方法篇
- Array.prototype.filter()的用法
- 使用正则去除空格
- jQuery知识篇
- jQuery~~模仿radio图片切换
- 下拉菜单的滑动效果
- jQuery点击切换字体颜色
- jQuery实现图片和字体图标颜色的切换
- 左侧菜单之当前点击菜单展开,其他菜单收缩
- jQuery全选或全部不选
- 实现子菜单的收缩和展开
- 小程序
- 小程序~调用豆瓣api数据的问题
- 实现毫秒级倒计时
- 条件渲染-wx:if语句
- 实现两个页面共存
- wxss样式问题
- 修改按钮默认的border-radius
- 移动端
- 安卓底部按钮浮上来的解决方法
- excel(xlsx) to json
- vue
- 事件
- 某个元素的点击事件
- 阻止子事件的冒泡
- excel文件的导入功能(解析成json数据)
- iview框架
- render函数
- iview不支持键盘事件的解决方法
- 路由传参
- 搜索框template的基本写法
- watch监听
- 路由发生变化,数据没有更新?
- 动态组件
- 刷新组件
- 前端小功能
- 搜索框
- axios
- axios公共请求方法
- cookie的简单使用
- 微信扫码登录功能
- pc端微信扫码登录-内嵌网页版
- MongoDB
- 安装与配置
- 布局
- js判断打开是PC端还是移动端
- 自适应布局方案-视口布局
- js实现加密和解密的公共方法
- js实现正则表达式匹配的文字加上标签
- python
- 解决pip升级不成功的原因
- Django
- runserver 失败的原因