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 相关文章推荐
用jquery来定位
Feb 20 Javascript
基于jquery的动态创建表格的插件
Apr 05 Javascript
jQuery对Select的操作大集合(收藏)
Dec 28 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
Oct 08 Javascript
详解AngularJS 模态对话框
Apr 07 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
May 31 Javascript
jQuery实现查找最近父节点的方法
Jun 23 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
Jul 04 Javascript
详解使用Node.js 将txt文件转为Excel文件
Jul 05 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 Javascript
JavaScript中filter的用法实例分析
Feb 27 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
May 05 Javascript
详解使用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之第八天
2006/10/09 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
Python简单进程锁代码实例
2015/04/27 Python
Python实现二分查找算法实例
2015/05/26 Python
Python中super函数的用法
2017/11/17 Python
python实现名片管理系统
2018/11/29 Python
Django中Middleware中的函数详解
2019/07/18 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
python将数组n等分的实例
2019/12/02 Python
Python post请求实现代码实例
2020/02/28 Python
keras.layer.input()用法说明
2020/06/16 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
狗狗玩具、零食和咀嚼物的月度送货服务:Super Chewer
2018/08/22 全球购物
便利店投资的创业计划书
2014/01/12 职场文书
创建文明城市标语
2014/06/16 职场文书
交通安全月活动总结
2015/05/08 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
庭外和解协议书
2016/03/23 职场文书
导游词之张家界
2019/10/31 职场文书