Uni-App 快捷登录

这篇具有很好参考价值的文章主要介绍了Uni-App 快捷登录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

uniapp 实现一键登录前置条件: 开通uniCloud, 开通一键登录功能参考的文档 :
官网 - 一键登录uniapp指南 : https://uniapp.dcloud.net.cn/univerify.html#%E6%A6%82%E8%BF%B0
官网 - 一键登录开通指南 : https://ask.dcloud.net.cn/article/37965
官网 - unicloud使用指南 https://uniapp.dcloud.net.cn/uniCloud/quickstart.html#
官网 - 一键登录uniCloud使用说明 https://uniapp.dcloud.net.cn/uniCloud/univerify.html#

一、开通阿里云服务

Uni-App 快捷登录,uni-app

Uni-App 快捷登录,uni-app

二、新建云函数getPhoneNumber

Uni-App 快捷登录,uni-app

由于一键登录依赖 verify

Uni-App 快捷登录,uni-app

 Uni-App 快捷登录,uni-app

编写云函数代码

Uni-App 快捷登录,uni-app

'use strict'
const crypto = require('crypto')
exports.main = async (event, context) => {
	const res = await uniCloud.getPhoneNumber({
		provider: 'univerify',
		apiKey: '', // 在开发者中心开通服务并获取apiKey
		apiSecret: '', // 在开发者中心开通服务并获取apiSecret
		access_token: event.access_token,
		openid: event.openid
	})
	if(res.phoneNumber){
		return {
			code: 0,
			message: '获取手机号成功',
			data: res.phoneNumber
		}
	} else {
		return {
			code: result.data.code,
			message: result.data.msg,
			data: result.data.data
		}
	}
}

三、配置 uni-app项目

Uni-App 快捷登录,uni-app

 Uni-App 快捷登录,uni-app

 

四、编写getPhoneLogin.js

export default{
	methods:{
		async oneClickLogin() {
			await this.preLogin(true)
			uni.login({
				provider: 'univerify',
				univerifyStyle: {
					fullScreen: false,
					backgroundColor: '#ffffff',
					otherLoginButton: {
						// 是否显示其他登录按钮
						visible: false
					},
					icon: {
						"path":"static/logo.png",
						"width":  "60px",
						"height": "60px" 
					},
					authButton: {
						normalColor: '#2dc8a1'
					},
					privacyTerms: {
						defaultCheckBoxState: false
					}
				},
				success(res) {
					uniCloud.callFunction({
						name: 'getPhoneNumber',
						data: {
							access_token: res.authResult.access_token,
							openid: res.authResult.openid
						}
					}).then(async (dataRes) => {
						if (dataRes.result.code == 0) {
							setTimeout(async () => {
								uni.closeAuthView()
							}, 1000)
						} else {
		                    uni.showToast({
								title: dataRes.result.message,
								icon: 'none'
							})
						}
					}).catch((err) => {
						uni.showModal({
							title: '登录失败',
							content: err.errMsg,
							showCancel: false,
							success() {
								uni.closeAuthView()
							}
						})
					})
				},
				fail(err) {
					if (err.errCode != 30002 && err.errCode != '30003' && err.errCode != '30006') {
						uni.showModal({
							title: '登录失败',
							content: err.errMsg,
							showCancel: false,
							success() {
								// 客户端关闭一键登录授权界面
								uni.closeAuthView()
							}
						})
					}
				}
			})
		},
		
		/**
		 * 预登录
		 * 1、预登录操作可以判断当前设备环境是否支持一键登录,如果能支持一键登录,此时可以显示一键登录选项,同时预登录会准备好相关环境,显著提升显示授权登录界面的速度。
		 * 2、如果当前设备环境不支持一键登录,此时应该显示其他的登录选项。
		 * 3、如果手机没有插入有效的sim卡,或者手机蜂窝数据网络关闭,都有可能造成预登录校验失败。
		 * @param Boolean isShowMsg: 是否显示错误提示
		 */
		preLogin(isShowMsg = false) {
			return new Promise((resolve, reject) => {
				uni.preLogin({
					provider: 'univerify',
					success() {
		                this.isOneClickLogin = true
						resolve(true)
					},
					fail(err) {
						// 如果手机没有插入有效的sim卡,或者手机蜂窝数据网络关闭,都有可能造成预登录校验失败。
		                this.isOneClickLogin = false
						if (isShowMsg && err.errMsg != 'login:ok') {
							// 不同运营商 返回的报错字段不同
							uni.showModal({
								title: '当前设备环境不支持一键登录',
								content: err.errMsg || err.metadata.resultMsg || err.metadata.error_data || err.metadata.resultDesc ||
									'请检查是否插入有效sim卡及开启蜂窝数据网络',
								showCancel: false
							})
						}
						resolve(false)
					}
				})
			})
		}
	}
}

也可成功后自己请求自己的 后台接口

async oneClickLogin() {
				await this.preLogin(true)
 
				uni.login({
					provider: 'univerify',
					univerifyStyle: {
						fullScreen: true,
						backgroundColor: '#ffffff',
						otherLoginButton: {
							// 是否显示其他登录按钮
							visible: false
						},
						authButton: {
							normalColor: '#2dc8a1'
						},
						privacyTerms: {
							// 条款勾选框初始状态
							defaultCheckBoxState: false,
							privacyItems: [{
									url: 'https://xxx/agreement.html',
									title: '用户服务协议'
								},
								{
									url: 'https://xxx/privacypolicy.html',
									title: '隐私政策'
								}
							]
						}
					},
					success(res) {
						uniCloud.callFunction({
							name: 'login',
							data: {
								access_token: res.authResult.access_token,
								openid: res.authResult.openid,
								serversUrl: '这里上传你的接口地址'
							}
						}).then(async (dataRes) => {
							if (dataRes.result.code == 0) {
                                // 这里写你登录成功后的逻辑 ...
 
								uni.showToast({
									title: '登录成功',
									icon: 'success'
								})
 
								uni.setStorageSync('token', dataRes.result.data.access_token)
 
								setTimeout(async () => {
									uni.closeAuthView()
									uni.navigateBack()
								}, 1000)
							} else {
                                uni.showToast({
									title: dataRes.result.message,
									icon: 'none'
								})
							}
						}).catch((err) => {
							uni.showModal({
								title: '登录失败',
								content: err.errMsg,
								showCancel: false,
								success() {
									uni.closeAuthView()
								}
							})
						})
					},
					fail(err) {
						if (err.errCode != 30002 && err.errCode != '30003' && err.errCode != '30006') {
							uni.showModal({
								title: '登录失败',
								content: err.errMsg,
								showCancel: false,
								success() {
									// 客户端关闭一键登录授权界面
									uni.closeAuthView()
								}
							})
						}
					}
				})
			},

四、配置参数(可自行配置)

{  
    "fullScreen": false, // 是否全屏显示,默认值: false
    "backgroundColor": "#ffffff",  // 授权页面背景颜色,默认值:#ffffff
    "backgroundImage": "", // 全屏显示的背景图片,默认值:"" (仅支持本地图片,只有全屏显示时支持)  
    "icon": {  
        "path": "static/xxx.png", // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo
        "width":  "60px",  //图标宽度 默认值:60px
        "height": "60px"   //图标高度 默认值:60px
    },  
    "closeIcon": {  
        "path": "static/xxx.png" // 自定义关闭按钮,仅支持本地图片。 HBuilderX3.3.7+版本支持
    },  
    "phoneNum": {  
        "color": "#202020"  // 手机号文字颜色 默认值:#202020  
    },  
    "slogan": {  
        "color": "#BBBBBB"  //  slogan 字体颜色 默认值:#BBBBBB  
    },  
    "authButton": {  
        "normalColor": "#3479f5", // 授权按钮正常状态背景颜色 默认值:#3479f5  
        "highlightColor": "#2861c5",  // 授权按钮按下状态背景颜色 默认值:#2861c5(仅ios支持)  
        "disabledColor": "#73aaf5",  // 授权按钮不可点击时背景颜色 默认值:#73aaf5(仅ios支持)  
        "textColor": "#ffffff",  // 授权按钮文字颜色 默认值:#ffffff  
        "title": "本机号码一键登录", // 授权按钮文案 默认值:“本机号码一键登录”  
        "borderRadius": "24px"	// 授权按钮圆角 默认值:"24px" (按钮高度的一半)
    },  
    "otherLoginButton": {  
        "visible": true, // 是否显示其他登录按钮,默认值:true  
        "normalColor": "", // 其他登录按钮正常状态背景颜色 默认值:透明 
        "highlightColor": "", // 其他登录按钮按下状态背景颜色 默认值:透明 
        "textColor": "#656565", // 其他登录按钮文字颜色 默认值:#656565  
        "title": "其他登录方式", // 其他登录方式按钮文字 默认值:“其他登录方式”  
        "borderColor": "",  //边框颜色 默认值:透明(仅iOS支持)  
        "borderRadius": "0px" // 其他登录按钮圆角 默认值:"24px" (按钮高度的一半)
    },  
    "privacyTerms": {  
        "defaultCheckBoxState":true, // 条款勾选框初始状态 默认值: true
        "isCenterHint":false, //未勾选服务条款时点击登录按钮的提示是否居中显示 默认值: false (3.7.13+ 版本支持)
        "uncheckedImage":"", // 可选 条款勾选框未选中状态图片(仅支持本地图片 建议尺寸 24x24px)(3.2.0+ 版本支持)   
        "checkedImage":"", // 可选 条款勾选框选中状态图片(仅支持本地图片 建议尺寸24x24px)(3.2.0+ 版本支持)   
        "checkBoxSize":12, // 可选 条款勾选框大小
        "textColor": "#BBBBBB", // 文字颜色 默认值:#BBBBBB  
        "termsColor": "#5496E3", //  协议文字颜色 默认值: #5496E3  
        "prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”  
        "suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”  
        "privacyItems": [  // 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效  
            {  
                "url": "https://", // 点击跳转的协议详情页面  
                "title": "用户服务协议" // 协议名称  
            }  
        ]  
    },
    "buttons": {  // 自定义页面下方按钮仅全屏模式生效(3.1.14+ 版本支持)
        "iconWidth": "45px", // 图标宽度(高度等比例缩放) 默认值:45px
        "list": [
            {
                "provider": "apple",
                "iconPath": "/static/apple.png" // 图标路径仅支持本地图片
            }, 
            {
                "provider": "weixin",
                "iconPath": "/static/wechat.png" // 图标路径仅支持本地图片
            }
        ]
    }
}

注意:写完后这个uniClound目录是跟我们前端代码放在一起的。云函数代码写完后需要上传部署到云服务空间。 

Uni-App 快捷登录,uni-app文章来源地址https://www.toymoban.com/news/detail-741575.html

到了这里,关于Uni-App 快捷登录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于uni-app小程序接入微信登录

    https://uniapp.dcloud.net.cn/api/plugins/login.html#login 官网上有关于uni.login()的说明,如果是要微信登录,则需要wx.login()。 小程序登录 | 微信开放文档         如下图,在小程序管理平台生成AppSecret,同时将AppId在HubilderX中配置。           在HbuilderX中使用wx.login获取到code,然后调用

    2024年02月11日
    浏览(60)
  • 【uni-app2.0】实现登录页记住密码功能

    使用uni-app的 uni.setStorageSync() 和 uni.getStorageSync() 方法来存储和读取密码 在登录页中添加一个记住密码的 u-checkbox 选项,并在data里面添加一个 rememberPwd 的布尔值,在每次点击记住密码 change 的时候来记录用户的选择 在点击登录按钮执行的事件中,使用 uni.setStorageSync() 方法将【

    2024年02月15日
    浏览(56)
  • uni-app:登录与支付-- 三秒后自动跳转

    三秒后自动跳转到登录页面 需求描述:在购物车页面,当用户点击 “结算” 按钮时, 如果用户没有登录,则 3 秒后自动跳转到登录页面 在  my-settle  组件的  methods  节点中,声明一个叫做  showTips  的方法,专门用来展示倒计时的提示消息: 改造  结算  按钮的  click  

    2023年04月08日
    浏览(50)
  • uni-app 微信小程序刷新token,无感登录

    描述:         后端token每5分钟刷新一次,需要给注册过的用户无感登录,当接口403或401后,刷新token并且重新发起所有403或401请求 我的实现  参照: 参照链接uniapp+uview(luch-request)无痛刷新token - 掘金 (juejin.cn)

    2024年02月15日
    浏览(62)
  • VUE3、uni-app、SpringBoot登录密码加密

    aes.js import {Encrypt} from \\\'@/utils/aes.js\\\'; loginForm.value.password = Encrypt(password.value); new Aes().decrypt(loginBody.getPassword()) CryptoJS.js aes.js import {Encrypt} from \\\'@/utils/aes.js\\\' Encrypt(this.password)

    2024年02月08日
    浏览(46)
  • uni-app 微信小程序之好看的ui登录页面(三)

    更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程序之好看的ui登录页面(四) uni-app 微信小程序之好看的ui登录页面(五)

    2024年01月15日
    浏览(61)
  • uni-app 微信小程序之好看的ui登录页面(四)

    更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程序之好看的ui登录页面(四) uni-app 微信小程序之好看的ui登录页面(五)

    2024年02月04日
    浏览(51)
  • uni-app 微信小程序之好看的ui登录页面(五)

    更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程序之好看的ui登录页面(四) uni-app 微信小程序之好看的ui登录页面(五)

    2024年02月04日
    浏览(61)
  • uni-app 微信小程序之好看的ui登录页面(二)

    更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程序之好看的ui登录页面(四) uni-app 微信小程序之好看的ui登录页面(五)

    2024年02月03日
    浏览(63)
  • uni-app 微信小程序之好看的ui登录页面(一)

    更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程序之好看的ui登录页面(四) uni-app 微信小程序之好看的ui登录页面(五)

    2024年02月04日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包