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 相关文章推荐
ie 调试javascript的工具
Apr 29 Javascript
window.parent调用父框架时 ie跟火狐不兼容问题
Jul 30 Javascript
JavaScript 空位补零实现代码
Feb 26 Javascript
浅析JavaScript中的CSS属性及命名规范
Nov 28 Javascript
浅谈Javascript 执行顺序
Dec 18 Javascript
Jquery插件easyUi表单验证提交(示例代码)
Dec 30 Javascript
JavaScript阻止浏览器返回按钮的方法
Mar 18 Javascript
JavaScript简单表格编辑功能实现方法
Apr 16 Javascript
jquery-tips悬浮提示插件分享
Jul 31 Javascript
AngularJS实现表单验证功能详解
Oct 12 Javascript
jQuery实现炫丽的3d旋转星空效果
Jul 04 jQuery
Vue切换div显示隐藏,多选,单选代码解析
Jul 14 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+MySQL5.0中文乱码解决方法
2006/11/20 PHP
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
动态添加删除表格行的js实现代码
2014/02/28 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
python类继承用法实例分析
2015/05/27 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
英国女士家居服网站:hush
2017/08/09 全球购物
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
大学生通用个人的自我评价
2014/02/10 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
爱心捐款感谢信
2015/01/20 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书