欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

uni-app之APP和小程序微信授权方法

程序员文章站 2022-06-30 10:33:42
uni-app 介绍 uni-app 是一个使用 vue.js 开发跨平台应用的前端框架。 适用平台:android、ios、微信小程序。实现了一套代码,同时发布到...

uni-app 介绍

uni-app 是一个使用 vue.js 开发跨平台应用的前端框架。

适用平台:android、ios、微信小程序。实现了一套代码,同时发布到android、ios、微信小程序。

参考官方:

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 类型,获取用户基本信息。

参考官方:

示例代码:

<!-- #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);
},

微信登录

参考官方:

(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');
		}
	})
},

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。