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----文件操作
Jan 18 Javascript
奇妙的js
Sep 24 Javascript
jQuery 标题的自动翻转实现代码
Oct 14 Javascript
事件模型在各浏览器中存在差异
Oct 20 Javascript
JavaScript验证电子邮箱的函数
Aug 22 Javascript
兼容主流浏览器的JS复制内容到剪贴板
Dec 12 Javascript
javascript判断图片是否加载完成的方法推荐
May 13 Javascript
JS生成和下载二维码的代码
Dec 07 Javascript
webpack学习笔记之优化缓存、合并、懒加载
Aug 24 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
Apr 25 Javascript
pageGroup.js实现分页功能
Jul 27 Javascript
vue开发拖拽进度条滑动组件
Sep 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
黑夜路人出的几道php笔试题
2009/08/04 PHP
一步一步学习PHP(1) php开发环境配置
2010/02/15 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
Python随机生成手机号、数字的方法详解
2017/07/21 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
python实现俄罗斯方块游戏
2020/03/25 Python
Python列表的切片实例讲解
2019/08/20 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
python连接PostgreSQL过程解析
2020/02/09 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
会展中心部门工作职责
2013/11/27 职场文书
档案接收函范文
2014/01/10 职场文书
绿色城市实施方案
2014/03/19 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
2014年便民服务中心工作总结
2014/12/20 职场文书
小学美术教学反思
2016/02/17 职场文书
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
JavaScript实现栈结构详细过程
2021/12/06 Javascript