uniapp一键登录

1、创建云函数getPhoneNumber

052e727db92449118a7b0a130b6cf193.png

 2、修改index.js

'use strict';
exports.main = async (event, context) => {
	const res = await uniCloud.getPhoneNumber({
		appid: 'xxxx',// 在manifest.json里面可以找到
		provider: 'univerify',
		apiKey: 'xxxx',// 在DCloud开发者中心开通一键登录基础服务时自动生成的
		apiSecret: 'xxxx',// 开通一键登录基础服务时自动生成的
		access_token: event.access_token,
		openid: event.openid
	});
	console.log(res,"res"); // res里的数据格式	{ code: 0, success: true, phoneNumber: '186*****078' }
	return {
		code: 0,
		data: res,
		message: '获取手机号成功'
	}
};

3、修改package.json

{
  "name": "univerify",
  "dependencies": {},
  "extensions": {
    "uni-cloud-jql": {},
	"uni-cloud-verify": {}
  }
}

4、右键getPhoneNumber上传部署

5、使用

5、1请求登录授权

uni.preLogin({
	provider: 'univerify',
	success(){  //预登录成功
		// 显示一键登录选项
	},
	fail(res){  // 预登录失败
		// 不显示一键登录选项(或置灰)
    // 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器
		console.log(res.errCode)
		console.log(res.errMsg)
	}
})

5、2登录

uni.preLogin({
					provider: 'univerify',
					success: () => {
						uni.login({
							provider: 'univerify',
							univerifyStyle: {
								"fullScreen": true, // 是否全屏显示,true表示全屏模式,false表示非全屏模式,默认值为false。
								"backgroundColor": "#ffffff", // 授权页面背景颜色,默认值:#ffffff  
								"phoneNum": {
									"color": "#000000", // 手机号文字颜色 默认值:#000000   
								},
								"slogan": {
									"color": "#8a8b90", //  slogan 字体颜色 默认值:#8a8b90  
								},
								"icon": {
									"path": "static/logo.png" // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo   
								},
								"authButton": {
									"normalColor": "#3479f5", // 授权按钮正常状态背景颜色 默认值:#3479f5  
									"highlightColor": "#2861c5", // 授权按钮按下状态背景颜色 默认值:#2861c5(仅ios支持)  
									"disabledColor": "#73aaf5", // 授权按钮不可点击时背景颜色 默认值:#73aaf5(仅ios支持)  
									"textColor": "#ffffff", // 授权按钮文字颜色 默认值:#ffffff  
									"title": "本机号码一键登录" // 授权按钮文案 默认值:“本机号码一键登录”  
								},
								"privacyTerms": {  
									"defaultCheckBoxState":false, // 条款勾选框初始状态 默认值: true
									"uncheckedImage":"", // 可选 条款勾选框未选中状态图片(仅支持本地图片 建议尺寸 24x24px)(3.2.0+ 版本支持)   
									"checkedImage":"", // 可选 条款勾选框选中状态图片(仅支持本地图片 建议尺寸24x24px)(3.2.0+ 版本支持)   
									"checkBoxSize":12, // 可选 条款勾选框大小,仅android支持
									"textColor": "#BBBBBB", // 文字颜色 默认值:#BBBBBB  
									"termsColor": "#5496E3", //  协议文字颜色 默认值: #5496E3  
									"prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”  
									"suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”  
									"privacyItems": [  // 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效  
										{  
											"url": "http://live.opps.live/public/pdf/user1.html", // 点击跳转的协议详情页面  
											"title": "用户协议" // 协议名称  
										},
										{
											"url": "http://live.opps.live//public/pdf/user2.html", // 点击跳转的协议详情页面  
										  	"title": "隐私政策" // 协议名称  
										} 
									]  
								},
								"otherLoginButton": {
									"visible": "false", // 是否显示其他登录按钮,默认值:true  
								},
								"otherLoginButton": {  
									"visible": true, // 是否显示其他登录按钮,默认值:true  
									"normalColor": "", // 其他登录按钮正常状态背景颜色 默认值:透明 
									"highlightColor": "", // 其他登录按钮按下状态背景颜色 默认值:透明 
									"textColor": "#656565", // 其他登录按钮文字颜色 默认值:#656565  
									"title": "其他登录方式", // 其他登录方式按钮文字 默认值:“其他登录方式”  
									"borderColor": "",  //边框颜色 默认值:透明(仅iOS支持)  
									"borderRadius": "0px" ,// 其他登录按钮圆角 默认值:"24px" (按钮高度的一半)
								},
							},
							success: (res) => {
								console.log(3333)
								console.log(res)
								uniCloud.callFunction({
									name: 'getPhoneNumber', // 你的云函数名称
									data: {
										access_token: res.authResult.access_token, // 客户端一键登录接口返回的access_token
										openid: res.authResult.openid // 客户端一键登录接口返回的openid
									}
								}).then(dataRes => {
									console.log('云函数返回的参数3333', dataRes)
									console.log(dataRes)
									_this.logins(dataRes);
									
								}).catch(err => {
									console.log('云函数报错', err)
								})
								uni.showToast({
									title: res.authResult,
									icon: "none"
								})
								uni.closeAuthView() //关闭一键登录弹出窗口
							},
							fail(res) {
								uni.reLaunch({
									url: '/pages/login/login',
								});
								uni.closeAuthView()
								// console.log('失败')
							},
						})
					},
					fail(res) {
						console.log('一键登录失败',res)
						if (res.errMsg != 'login:ok') {
							uni.redirectTo({
								url: '/pages/login/login'
							});
							uni.showToast({
								title: res.metadata.msg,
								icon: "none"
							})
						}
					}
				})

简洁版

// 判断是否支持一键登陆
isAutoLogin() {
    let _that = this
    // 这一步写不写问题都不大
	uni.getProvider({ //获取可用的服务提供商
		service: 'oauth',
		success: function(res) {
			console.log(res.provider) // ['weixin', qq', 'univerify']
			}
		});
	uni.preLogin({ //预登录
		provider: 'univerify', //用手机号登录
		success() {
			console.log('预登录成功')
			uni.login({ //正式登录,弹出授权窗
			provider: 'univerify',
			univerifyStyle: { // 自定义登录框样式 },
				success(res) {
				    console.log(res, 'uni.login');
					// 在得到access_token后,通过callfunction调用云函数
					uniCloud.callFunction({
						name: 'getPhoneNumber', // 云函数名称
						data: { //传给云函数的参数
							'access_token': res.authResult.access_token, // 客户端一键登录接口返回的access_token
							'openid': res.authResult.openid // 客户端一键登录接口返回的openid
							},
						success(callRes) {
							console.log('调用云函数成功', callRes)
                            // 此处可获得手机号,调用后端接口
							console.log(callRes.result.data)
							},
							fail(callErr) {
								console.log('调用云函数出错', callErr)
							},
							complete() {
								uni.closeAuthView() //关闭授权登录界面
							}
						})
					},
					fail(err) { // 正式登录失败
						console.log(err)
						console.log(err.errMsg)
						uni.closeAuthView() //关闭授权登录界面
					}
				})
			},
 
			fail(err) { //预登录失败
				console.log('错误码:', err)
				console.log(err.errMsg)
			}
		})
	},

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大得369

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值