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 相关文章推荐
Firefox getBoxObjectFor getBoundingClientRect联系
Oct 26 Javascript
如何设置一定时间内只能发送一次请求
Feb 28 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
May 18 Javascript
JavaScript 模块的循环加载实现方法
Dec 13 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
Feb 13 Javascript
微信小程序 Nginx环境配置详细介绍
Feb 14 Javascript
微信小程序 动态绑定事件并实现事件修改样式
Apr 13 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
Jun 03 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
Jul 06 Javascript
js中Function引用类型常见有用的方法和属性详解
Dec 11 Javascript
html中创建并调用vue组件的几种方法汇总
Nov 17 Javascript
Vue中避免滥用this去读取data中数据
Mar 02 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 session处理的定制
2009/03/16 PHP
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
jquery 表单进行客户端验证demo
2009/08/24 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
python扫描线填充算法详解
2020/02/19 Python
python selenium xpath定位操作
2020/09/01 Python
python代码实现猜拳小游戏
2020/11/30 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
苏宁红孩子母婴商城:redbaby
2017/02/12 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
DELPHI面试题研发笔试试卷
2015/11/08 面试题
车辆维修工自我评价怎么写
2013/09/20 职场文书
标准毕业生自荐信范文
2013/11/04 职场文书
运动会闭幕式解说词
2014/02/21 职场文书