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 相关文章推荐
javascript 学习笔记(一)DOM基本操作
Apr 08 Javascript
jquery中加载图片自适应大小主要实现代码
Aug 23 Javascript
javascript操作css属性
Dec 30 Javascript
jQuery实现购物车多物品数量的加减+总价计算
Jun 06 Javascript
js使用removeChild方法动态删除div元素
Aug 01 Javascript
jQuery+PHP打造滑动开关效果
Dec 16 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
Oct 22 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
Apr 06 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
Apr 18 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
Sep 26 Javascript
jQuery zTree树插件动态加载实例代码
May 11 jQuery
微信小程序实现侧边分类栏
Oct 21 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中CI操作多个数据库的代码
2012/07/05 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
PHP常用技巧汇总
2016/03/04 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
js判断ie版本号的简单实现代码
2014/03/05 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
2014/04/02 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
Python 性能优化技巧总结
2016/11/01 Python
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Python3中详解fabfile的编写
2018/06/24 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
美国购车网站:TrueCar
2016/10/19 全球购物
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
销售部主管岗位职责
2013/12/18 职场文书
管理失职检讨书范文
2015/05/05 职场文书
六一儿童节新闻稿
2015/07/17 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书