uni-app之APP和小程序微信授权方法


Posted in Javascript onMay 09, 2019

uni-app 介绍

uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架。

适用平台:Android、iOS、微信小程序。实现了一套代码,同时发布到Android、iOS、微信小程序。

参考官方:https://uniapp.dcloud.io/

APP微信授权

检测服务商

检测手机上是否安装微信、QQ、新浪微博等。

uni.getProvider({
  service: 'oauth',
  success: function (res) {
    console.log(res.provider);
  }
});

uni-app之APP和小程序微信授权方法

授权登录

获取openid,(unionid)等
uni.login({
  provider: 'weixin',
  success: function (loginRes) {
    console.log(JSON.stringify(loginRes));
  }
});

获取用户信息

uni.getUserInfo({
	provider: 'weixin',
	success: function(infoRes) {
		console.log('-------获取微信用户所有-----')
		console.log(JSON.stringify(infoRes.userInfo));
	}
});

示例代码

<!-- #ifdef APP-PLUS -->
<button class="" @click="appLogin">APP微信授权登录</button>
<!-- #endif -->
		
appLogin: function() {
	uni.getProvider({
		service: 'oauth',
		success: function(res) {
			console.log(res.provider);
			//支持微信、qq和微博等
			if (~res.provider.indexOf('weixin')) {
				uni.login({
					provider: 'weixin',
					success: function(loginRes) {
						console.log('-------获取openid(unionid)-----');
						console.log(JSON.stringify(loginRes));
						// 获取用户信息
						uni.getUserInfo({
							provider: 'weixin',
							success: function(infoRes) {
								console.log('-------获取微信用户所有-----');
								console.log(JSON.stringify(infoRes.userInfo));
							}
						});
					}
				});
			}
		}
	});
},

小程序微信授权

获取用户基本信息

为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持。从2018年4月30日开始,小程序与小游戏的体验版、开发版调用 wx.getUserInfo 接口,将无法弹出授权询问框,默认调用失败。正式版暂不受影响。开发者可使用以下方式获取或展示用户信息。

小程序使用 button 组件,并将 open-type 指定为 getUserInfo 类型,获取用户基本信息。

参考官方:https://developers.weixin.qq.com/miniprogram/dev/component/button.html

示例代码:

<!-- #ifdef MP-WEIXIN -->
<button class="" open-type="getUserInfo" @getuserinfo="wxGetUserInfo" withCredentials="true">微信授权获取用户信息</button>
<!-- #endif -->

wxGetUserInfo:function(res){
	if (!res.detail.iv) {
		uni.showToast({
			title: "您取消了授权,登录失败",
			icon: "none"
		});
		return false;
	}
	console.log('-------用户授权,并获取用户基本信息和加密数据------')
	console.log(res.detail);
},

微信登录

参考官方:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

(1)页面uni.login获取code

(2)后端通过code获取sessionKey、openid(unionid)等,后端调用接口如下:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

(3)示例代码

<!-- #ifdef MP-WEIXIN -->
<button class="" @click="wxLogin">微信登录</button>
<!-- #endif -->

wxLogin: function() {
	uni.login({
		provider: 'weixin',
		success: function(loginRes) {
			console.log('-------获取code-------')
			console.log(loginRes.code);
			wx.request({
				url: 'https://xxxxx'+loginRes.code,
				success: function(info) {
					console.log('-------获取sessionKey、openid(unionid)-------')
					console.log(info);
				},
				fail: function(e) {
					console.log(e)
				}
			})
		}
	});
}

微信登录状态监测

<!-- #ifdef MP-WEIXIN -->
<button class="" @click="checkLogin">微信登录检测</button>
<!-- #endif -->

checkLogin: function() {
	wx.checkSession({
		success() {
			console.log('ok');
			// session_key 未过期,并且在本生命周期一直有效
		},
		fail() {
			// session_key 已经失效,需要重新执行登录流程
			//wx.login() // 重新登录
			console.log('expire');
		}
	})
},

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
HTTP 304错误的详细讲解
Nov 13 Javascript
调用innerHTML之后onclick失效问题的解决方法
Jan 28 Javascript
javascript设计模式之解释器模式详解
Jun 05 Javascript
JS中FRAME的操作问题实例分析
Oct 21 Javascript
使用js画图之画切线
Jan 12 Javascript
js使用post 方式打开新窗口
Feb 26 Javascript
jquery实现界面无刷新加载登陆注册
Jul 30 Javascript
微信小程序  Mustache语法详细介绍
Oct 27 Javascript
js实现将json数组显示前台table中
Jan 10 Javascript
vue 2.0封装model组件的方法
Aug 03 Javascript
JavaScript的console命令使用实例
Dec 03 Javascript
Vue实现简单购物车功能
Dec 13 Vue.js
详解使用uni-app开发微信小程序之登录模块
May 09 #Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
May 09 #Javascript
JS原型与继承操作示例
May 09 #Javascript
详解微信小程序回到顶部的两种方式
May 09 #Javascript
jquery登录的异步验证操作示例
May 09 #jQuery
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
May 09 #Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
May 09 #Javascript
You might like
PHP JSON 数据解析代码
2010/05/26 PHP
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
JS将时间秒转换成天小时分钟秒的字符串
2019/07/10 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
[05:24]TI9采访——教练
2019/08/24 DOTA
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
python2 与python3的print区别小结
2018/01/16 Python
Python的argparse库使用详解
2018/10/09 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
python将数据插入数据库的代码分享
2020/08/16 Python
pytorch学习教程之自定义数据集
2020/11/10 Python
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
煤矿机修工岗位职责
2014/02/07 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
化工生产实习心得体会
2016/01/22 职场文书