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模块模式分析
May 16 Javascript
location.search在客户端获取Url参数的方法
Jun 08 Javascript
javascript学习笔记(二) js一些基本概念
Jun 18 Javascript
javascript对下拉列表框(select)的操作实例讲解
Nov 29 Javascript
javascript中文本框中输入法切换的问题
Dec 10 Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 Javascript
ExtJs动态生成treepanel的Json格式
Jul 19 Javascript
微信小程序实战之自定义抽屉菜单(7)
Apr 18 Javascript
微信小程序实现左滑动删除效果
Mar 30 Javascript
JS监听组合按键思路及实现过程
Apr 17 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
Sep 24 Javascript
vue中使用腾讯云Im的示例
Oct 23 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
星际实力自我测试
2020/03/04 星际争霸
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
php关联数组快速排序的方法
2015/04/17 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
介绍JavaScript的一个微型模版
2015/06/24 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
Python中的取模运算方法
2018/11/10 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
中东最大的在线宠物店:Dubai Pet Food
2020/06/11 全球购物
2014年关于两会精神的心得体会
2014/03/17 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
运动会演讲稿
2014/05/07 职场文书
霸气队列口号
2014/06/18 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
维稳工作情况汇报
2014/10/27 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
Python实现仓库管理系统
2022/05/30 Python