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 面包屑导航 具体实现
Jun 05 Javascript
JavaScript通过select动态更换图片的方法
Mar 23 Javascript
简介JavaScript中setUTCSeconds()方法的使用
Jun 12 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
May 31 Javascript
深入浅析JavaScript函数前面的加号和叹号
Jul 09 Javascript
vue引入swiper插件的使用实例
Jul 19 Javascript
深入理解es6块级作用域的使用
Mar 28 Javascript
react实现antd线上主题动态切换功能
Aug 12 Javascript
使用Typescript和ES模块发布Node模块的方法
May 25 Javascript
如何通过JS实现日历简单算法
Oct 14 Javascript
微信小程序picker组件两列关联使用方式
Oct 27 Javascript
Vue3 Composition API的使用简介
Mar 29 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得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
JS中获取数据库中的值的方法
2013/07/14 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
深究AngularJS中$sce的使用
2017/06/12 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
Python将xml和xsl转换为html的方法
2015/03/10 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
Python3实现二叉树的最大深度
2019/09/30 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
Python实现SMTP邮件发送
2020/06/16 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
实习期自我鉴定
2013/10/11 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
具结保证书
2015/01/17 职场文书
高中物理教学反思
2016/02/19 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
导游词之河北野三坡
2019/12/11 职场文书