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中attr()和prop()在修改checked属性时的区别
Jul 18 Javascript
AngularJS基础学习笔记之简单介绍
May 10 Javascript
Js数组排序函数sort()介绍
Jun 08 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
Nov 23 Javascript
dedecms页面如何获取会员状态的实例代码
Mar 15 Javascript
如何获取元素的最终background-color
Feb 06 Javascript
vue router+vuex实现首页登录验证判断逻辑
May 17 Javascript
vue监听对象及对象属性问题
Aug 20 Javascript
VUE实现可随意拖动的弹窗组件
Sep 25 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
Apr 30 Javascript
图解JS原型和原型链实现原理
Sep 15 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
Dec 04 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获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
Javascript 入门基础学习
2010/03/10 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
简单介绍Python中的RSS处理
2015/04/13 Python
python django事务transaction源码分析详解
2017/03/17 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
django orm 通过related_name反向查询的方法
2018/12/15 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
会计出纳员的自我评价
2014/01/15 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS