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 相关文章推荐
最新28个很棒的jQuery 教程
May 28 Javascript
javascript实现英文首字母大写
Apr 23 Javascript
Node.js重新刷新session过期时间的方法
Feb 04 Javascript
jQuery页面加载初始化的3种方法(推荐)
Jun 02 Javascript
js倒计时简单实现代码
Aug 11 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
Sep 01 Javascript
详解vue中引入stylus及报错解决方法
Sep 22 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
Mar 13 Javascript
Angular数据绑定机制原理
Apr 17 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
Dec 12 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
Feb 09 Javascript
微信小程序文章详情功能完整实例
Jun 03 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脚本的10个技巧(6)
2006/10/09 PHP
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
浅析php header 跳转
2013/06/17 PHP
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
带密匙的php加密解密示例分享
2014/01/29 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
基于JS代码实现实时显示系统时间
2016/06/16 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
vue 指定组件缓存实例详解
2018/04/01 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
JS实现百度搜索框关键字推荐
2020/02/17 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
vue 项目@change多个参数传值多个事件的操作
2021/01/29 Vue.js
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
python读取mysql数据绘制条形图
2020/03/25 Python
500行python代码实现飞机大战
2020/04/24 Python
AmazeUI 面板的实现示例
2020/08/17 HTML / CSS
网站美工岗位职责
2014/04/02 职场文书
优秀家长事迹材料
2014/05/17 职场文书
项目投资合作意向书
2014/07/29 职场文书
大学生创业事迹材料
2014/12/30 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers
Python 如何实现文件自动去重
2021/06/02 Python
golang中的struct操作
2021/11/11 Golang
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python