精华内容
下载资源
问答
  • Google一键登录 只需单击一次即可注册用户,并保持他们自动登录。 安装 npm install google-one-tap --save 如何使用 React import googleOneTap from 'google-one-tap' ; const options = { client_id : '___...
  • 微信小程序开发一键登录 获取session_key和openid实例 思来想去不愿自己的微信小程序是个单机版本.自己又不会写后台.现在借助leancloud可以实现微信小程序一键登录功能.尝试后,做笔记. 第一步:下载av-weapp.js,放到...
  • 。。。。。。。Android webview QQ一键登录并向后台返回参数
  • 主要介绍了PHP版微信第三方实现一键登录及获取用户信息的方法,较为详细的分析了微信第三方登陆的相关注意事项与实现技巧,需要的朋友可以参考下
  • 通过“QQ登录”,用户能使用QQ帐号一键登录接入网站,大大降低了用户注册、登录的门槛,借助庞大的QQ用户群,给第三方网站带来更多新用户。已登录用户还可以将在第三方网站发布、分享的信息即时同步到QQ空间,从而...
  • Steam快捷一键登录源码,编译之后管路员运行正常使用,仿Steam绘制,很漂亮
  • 一键登录网易邮箱.rar

    2020-04-05 21:10:58
    一键登录网易邮箱.rar 一键登录网易邮箱.rar 一键登录网易邮箱.rar 一键登录网易邮箱.rar 一键登录网易邮箱.rar 一键登录网易邮箱.rar
  • qq一键登录

    2016-02-12 09:37:02
    qq一键登录一键登录 无需手控 绝无病毒
  • #73aaf5(仅ios支持) "textColor": "#ffffff", // 授权按钮文字颜色 默认值:#ffffff "title": "本机号码一键登录", // 授权按钮文案 默认值:“本机号码一键登录” "borderRadius": "24px" // 授权按钮...

    1、首先需要在dcloud开发者控制台开通一键登录,

    dcloudhttps://dev.dcloud.net.cn/uniLoginicon-default.png?t=L9C2https://dev.dcloud.net.cn/uniLogin

     充值,获取关键参数 ApiKey 和 ApiSecret

    2、登录云服务空间,创建云服务空间,选择运营商等  https://unicloud.dcloud.net.cn/home

    3、在项目中创建 云开发环境 ,本项目演示选择的是阿里云服务器 

    4、项目目录  创建 getPhoneNumber/index.js

    一键登录云函数 uni-app官网

     getPhoneNumber/index.js

    // 云函数
    'use strict';
    
    const db = uniCloud.database()
    exports.main = async (event) => {
    	const res = await uniCloud.getPhoneNumber({
    		appid: '__UNI__123456', // 替换成自己开通一键登录的应用的DCloud appid
    		provider: 'univerify',
    		apiKey: 'abcdefghjklokdsadsadsa', // 在开发者中心开通服务并获取apiKey
    		apiSecret: 'abscdshjksdhjakdahshjdsad', // 在开发者中心开通服务并获取apiSecret
    		access_token: event.access_token,
    		openid: event.openid
    	})
    	// 执行入库等操作,正常情况下不要把完整手机号返回给前端	
    	await db.collection('regUser').add({
    		openid: event.openid, //前端提交过来的数据
    		PhoneNumber: res.phoneNumber,
    		createTime: Date.now()
    	})
    
    	return res
    }
    

    5、右键关联云服务空间 

     

     选择创建的云空间

    关联后上传云函数

    6、一键登录本地方法

    import Vuex from '@/store/index.js'
    
    export function univerifyLogin(cb, fun, fun1) {
    	const commit = Vuex.commit;
    	const PROVIDER = 'univerify';
    	const univerifyStyle = {
    		"fullScreen": true,
    		"icon": {
    			"path": "static/icon/logo.png" // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo   
    		},
    		"authButton": {
    			"normalColor": "#00A861", // 授权按钮正常状态背景颜色 默认值:#3479f5  
    			"highlightColor": "#008B50", // 授权按钮按下状态背景颜色 默认值:#2861c5(仅ios支持)  
    			"disabledColor": "#7fd4b0", // 授权按钮不可点击时背景颜色 默认值:#73aaf5(仅ios支持)  
    			"textColor": "#ffffff", // 授权按钮文字颜色 默认值:#ffffff  
    			"title": "本机号码一键登录", // 授权按钮文案 默认值:“本机号码一键登录”  
    			"borderRadius": "24px" // 授权按钮圆角 默认值:"24px" (按钮高度的一半)
    		},
    		"privacyTerms": {
    			"defaultCheckBoxState": true, // 条款勾选框初始状态 默认值: true
    			"uncheckedImage": "", // 可选 条款勾选框未选中状态图片(仅支持本地图片 建议尺寸 24x24px)(3.2.0+ 版本支持)   
    			"checkedImage": "", // 可选 条款勾选框选中状态图片(仅支持本地图片 建议尺寸24x24px)(3.2.0+ 版本支持)   
    			"textColor": "#BBBBBB", // 文字颜色 默认值:#BBBBBB  
    			"termsColor": "#00A861", //  协议文字颜色 默认值: #5496E3  
    			"prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”  
    			"suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”  
    		},
    	}
    	return new Promise((resolve, reject) => {
    		uni.getProvider({
    			service: 'oauth',
    			success: (res) => {
    				if (res.provider.indexOf(PROVIDER) !== -1) {
    					// 一键登录已在APP onLaunch的时候进行了预登陆,可以显著提高登录速度。登录成功后,预登陆状态会重置
    
    					uni.login({
    						provider: PROVIDER,
    						univerifyStyle: univerifyStyle,
    						success: (res) => {
    							let loginRes = res.authResult
    							uni.closeAuthView();
    							uni.showLoading({
    								title: "登录中..."
    							});
    							uniCloud.callFunction({
    								name: 'getPhoneNumber', // 你的云函数名称
    								data: {
    									access_token: loginRes
    									.access_token, // 客户端一键登录接口返回的access_token
    									openid: loginRes
    										.openid // 客户端一键登录接口返回的openid
    								}
    							}).then(e => {
    								console.log('login success', e);
    								if (e.result.code == 0) {
    									typeof fun == "function" && fun(e.result)
    									resolve('suc');
    								} else {
    									console.log('登录失败', e);
    								}
    							})
    							.catch(err => {
    								// 处理错误
    								console.error("获取手机号err", err)
    								uni.showModal({
    									title: `登录失败`,
    									content: err.errMsg ||
    										"网络异常,请选择其他方式登录",
    									showCancel: false
    								})
    								typeof fun1 == "function" && fun1(err)
    								reject('err')
    							})
    
    						},
    						fail: (err) => {
    							console.error('授权登录失败:' + JSON.stringify(err));
    
    							univerifyErrorHandler(err, cb);
    						}
    					})
    
    
    				} else {
    					cb && cb()
    				}
    			},
    			fail: (err) => {
    				console.error('获取服务供应商失败:' + JSON.stringify(err));
    				cb && cb()
    			}
    		});
    
    	})
    }
    
    export function univerifyErrorHandler(err, cb) {
    	const state = Vuex.state;
    	const obj = {
    		showCancel: true,
    		cancelText: '其他登录方式',
    		success(res) {
    			console.log("rinima", res)
    			if (res.confirm) {
    				uni.redirectTo({
    					url: '/pages/login/login'
    				});
    			}
    			if (res.cancel) {
    				cb && cb()
    			}
    		}
    	} 
    
    	switch (true) {
    		// 一键登录点击其他登录方式
    		case err.code == 30002:
    			uni.closeAuthView();
    			cb && cb()
    			break;
    			// 未开通
    		case err.code == 1000:
    			uni.showModal(Object.assign({
    				title: `登录失败: ${err.code}`,
    				content: `${err.errMsg}\n开通指南:https://ask.dcloud.net.cn/article/37965`,
    				/* confirmText: '开通指南',
    				cancelText: '确定',
    				success: (res) => {
    					if (res.confirm) {
    						setTimeout(() => {
    							plus.runtime.openWeb('https://ask.dcloud.net.cn/article/37965')
    						}, 500)
    					}
    				} */
    			}, obj));
    			break;
    			// 预登陆失败
    		case err.code == 30005:
    			uni.showModal(Object.assign({
    				showCancel: false,
    				title: `登录失败`,
    				content: `${state.univerifyErrorMsg ||err.metadata.desc || err.errMsg}`
    			}, obj));
    			break;
    			//用户关闭验证界面
    		case err.code == 30003:
    			setTimeout(() => {
    				uni.redirectTo({
    					url: '/pages/login/login'
    				});
    			},500)
    
    			break;
    	}
    }
    
    

    7、调用

     引入
    import { univerifyLogin } from '@/common/univerify.js'
    
     async openUnLogin() {
    				    await univerifyLogin(() => {
    					uni.redirectTo({
    						url: '/pages/login/login'
    					});
    				}, res => {
    					console.log("个人中心一键登录:", res)
    					let loginMobile = res.phoneNumber
    
    					this.userStoreLogin(loginMobile).then(res => {
    						console.error("登录成功llllllllllll", res)
    						this.userStoreUserInfos()
    						util.showText("登录成功");
    					})
    				})
    			},

    展开全文
  • 用php写的一个简易版微信第三方一键登录
  • 阿里的手机号一键登录,他们一般没有公共下载资源只有拥有账号或者工单才能下载在这里方便大家下载和使用,好用的话记得给个好评哦
  • uni-app实现一键登录

    千次阅读 2021-01-26 16:01:56
    uni-app实现一键登录uni-app实现一键登录步骤1、开通uni一键登录服务2、uni-app项目开通uniCloud服务3、项目开发 uni-app实现一键登录 步骤 1、开通uni一键登录服务 1)需要登录DCloud开发者中心,申请开通一键登录...

    uni-app实现一键登录

    在这里插入图片描述

    步骤

    1、开通uni一键登录服务

    1)需要登录DCloud开发者中心,申请开通一键登录服务。(注:已在开发者中心开发了项目应用获取appid)
    在这里插入图片描述

    2)进入基础配置配置相关的信息,我这个是已经配置好了,在获取用户手机号码时需要云服务用到的ApiKeyApiSecret可在这里获取
    在这里插入图片描述
    真机调试无需添加应用,如需打包使用请添加。一键登录应用ID为离线打包时配置的appid
    在这里插入图片描述

    3)添加服务空间
    在这里插入图片描述

    2、uni-app项目开通uniCloud服务

    1)在uni-app项目中创建云开发环境,可阿里云或者腾讯云(我的是阿里云)
    在这里插入图片描述
    2)创建云函数,右键云开发环境创建
    在这里插入图片描述
    3)云函数使用在这里插入图片描述

    'use strict';
    exports.main = async (event, context) => {
    	// event里包含着客户端提交的参数
    	const res = await uniCloud.getPhoneNumber({
    		appid: 'xxxxxx', // 替换成自己开通一键登录的应用的DCloud appid,使用callFunction方式调用时可以不传(会自动取当前客户端的appid),如果使用云函数URL化的方式访问必须传此参数
    		provider: 'univerify',
    		apiKey: 'xxxxx', // 在开发者中心开通服务并获取apiKey
    		apiSecret: 'xxxxx', // 在开发者中心开通服务并获取apiSecret
    		access_token: event.access_token,
    		openid: event.openid
    	})
    
    	console.log('res',res); // res里包含手机号
    	// 执行用户信息入库等操作,正常情况下不要把完整手机号返回给前端
    	// 如果数据库在uniCloud上,可以直接入库
    	// 如果数据库不在uniCloud上,可以通过 uniCloud.httpclient API,将手机号通过http方式传递给其他服务器的接口,详见:https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=httpclient
    	return {
    		code: 0,
    		message: '获取手机号成功',
    		data:res
    	}
    }
    
    

    4)将云函数上传到云服务器(点击云函数右键上传)
    在这里插入图片描述
    5)项目配置(manifest.json中app模块的一键登录勾选)
    在这里插入图片描述

    3、项目开发

    1)页面点击一键登录(客户端-预登录)
    在这里插入图片描述

    <button class="loginPhone" @click="loginPhone">手机号一键登录</button>
    
    // 手机号一键登录
    			loginPhone() {
    				uni.preLogin({
    					provider: 'univerify',
    					success(res) { //预登录成功
    						// 显示一键登录选项
    						console.log(res);
    						console.log('999',2222);
    						uni.login({
    							provider: 'univerify',
    							univerifyStyle: { // 自定义登录框样式
    								//参考`univerifyStyle 数据结构`
    								"backgroundColor": "#ffffff", // 授权页面背景颜色,默认值:#ffffff  
    								"icon": {
    									"path": "/static/logo/logo.png" // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo   
    								},
    								"phoneNum": {
    									"color": "#000000", // 手机号文字颜色 默认值:#000000   
    									"fontSize": "18" // 手机号字体大小 默认值:18  
    								},
    								"slogan": {
    									"color": "#8a8b90", //  slogan 字体颜色 默认值:#8a8b90  
    									"fontSize": "12" // slogan 字体大小 默认值:12  
    								},
    								"authButton": {
    									"normalColor": "#3479f5", // 授权按钮正常状态背景颜色 默认值:#3479f5  
    									"highlightColor": "#2861c5", // 授权按钮按下状态背景颜色 默认值:#2861c5(仅ios支持)  
    									"disabledColor": "#73aaf5", // 授权按钮不可点击时背景颜色 默认值:#73aaf5(仅ios支持)  
    									"textColor": "#ffffff", // 授权按钮文字颜色 默认值:#ffffff  
    									"title": "本机号码一键登录" // 授权按钮文案 默认值:“本机号码一键登录”  
    								},
    								"otherLoginButton": {
    									"visible": "true", // 是否显示其他登录按钮,默认值:true  
    									"normalColor": "#f8f8f8", // 其他登录按钮正常状态背景颜色 默认值:#f8f8f8  
    									"highlightColor": "#dedede", // 其他登录按钮按下状态背景颜色 默认值:#dedede  
    									"textColor": "#000000", // 其他登录按钮文字颜色 默认值:#000000  
    									"title": "其他登录方式", // 其他登录方式按钮文字 默认值:“其他登录方式”  
    									"borderWidth": "1px", // 边框宽度 默认值:1px(仅ios支持)  
    									"borderColor": "#c5c5c5" //边框颜色 默认值: #c5c5c5(仅ios支持)  
    								},
    								"privacyTerms": {
    									"defaultCheckBoxState": "true", // 条款勾选框初始状态 默认值: true   
    									"textColor": "#8a8b90", // 文字颜色 默认值:#8a8b90  
    									"termsColor": "#1d4788", //  协议文字颜色 默认值: #1d4788  
    									"prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”  
    									"suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”  
    									"fontSize": "12", // 字体大小 默认值:12,  
    									"privacyItems": [
    										// 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效  
    										{
    											"url": "https://", // 点击跳转的协议详情页面  
    											"title": "用户服务协议" // 协议名称  
    										}
    									]
    								}
    							},
    							success(res) { // 登录成功
    								this.openid = res.authResult.openid;
    								this.access_token = res.authResult.access_token;
    								console.log(res.authResult); // {openid:'deviceIDlength+deviceID+gyuid',access_token:'接口返回的 token'}
    								console.log(this.openid);
    								console.log("access_token",this.access_token);
    								// 客户端(调用云函数)  调用云函数来实现整个业务逻辑
    								// 在得到access_token后,通过callfunction调用云函数
    								uniCloud.callFunction({
    								  name: 'login', // 你的云函数名称
    								  data: {
    								  	access_token: this.access_token, // 客户端一键登录接口返回的access_token
    								  	openid: this.openid // 客户端一键登录接口返回的openid
    								  }
    								}).then(res => {
    									console.log("获取成功");
    									console.log(res);
    									// 获取用户的手机号
    									this.phoneNumber=res.result.data.phoneNumber;
    									console.log(this.phoneNumber);
    								  // res.result = {
    								  //   code: '',
    								  //   message: ''
    								  // }
    								  // 登录成功,可以关闭一键登陆授权界面了
    								}).catch(err=>{
    								  // 处理错误
    								  console.log("获取失败");
    								  console.log(err);
    								})
    							},
    							fail(res) { // 登录失败
    							// console.log('失败',2222);
    								console.log(res.errCode)
    								console.log(res.errMsg)
    							}
    						})
    					},
    					fail(res) { // 预登录失败
    						// 不显示一键登录选项(或置灰)
    						// 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器
    						console.log('失败',2222);
    						console.log(res.errCode)
    						console.log(res.errMsg)
    					}
    				});
    
    
    			},
    

    2)预登录成功后点击一键登录成功后调用云函数获取用户的手机号码
    (一键登录成功后获取得到access_token和openid,使用uniCloud.callFunction的方式调用云函数,获取用户手机号)
    在这里插入图片描述

    	// 客户端(调用云函数)  调用云函数来实现整个业务逻辑
    								// 在得到access_token后,通过callfunction调用云函数
    								uniCloud.callFunction({
    								  name: 'login', // 你的云函数名称
    								  data: {
    								  	access_token: this.access_token, // 客户端一键登录接口返回的access_token
    								  	openid: this.openid // 客户端一键登录接口返回的openid
    								  }
    								}).then(res => {
    									console.log("获取成功");
    									console.log(res);
    									// 获取用户的手机号
    									this.phoneNumber=res.result.data.phoneNumber;
    									console.log(this.phoneNumber);
    								  // res.result = {
    								  //   code: '',
    								  //   message: ''
    								  // }
    								  // 登录成功,可以关闭一键登陆授权界面了
    								}).catch(err=>{
    								  // 处理错误
    								  console.log("获取失败");
    								  console.log(err);
    								})
    

    3)运行时可在云函数中查看日志(判断是否请求成功)
    在这里插入图片描述

    注)如果手机没有插入有效的sim卡,或者手机蜂窝数据网络关闭,都有可能造成预登陆校验失败。(所以运行测试时需要在有sim卡的真机上测试,使用数据线连接电脑和手机,将项目运行在手机上)
    连接后可自动检测
    在这里插入图片描述

    提示:uni-app官网也有详细的介绍,我只是对我初次学习uni-app的一键登录做个笔记,有错的地方希望各位能够指出来,我及时更正。谢谢支持。

    展开全文
  • 一键登录Android应用

    2020-09-19 16:30:26
    一键登录由您的代码触发。 根据您的应用程序,这可能在应用程序首次启动时触发,或者在用户尝试执行受保护的操作时触发。 Once you’ve decided to start the sign in process, you can query to see if any ...

    The new One Tap sign-in and sign-up on Android helps you optimize the flow for authenticating users in your app. For many Android apps, user accounts are an important part of the conversion funnel and a common source of user drop-off. Users (and developers alike!) often forget which account they signed in with or what password they used for your service. By optimizing the process, you can improve conversion rates and reduce drop-off.

    Android上新的“ 一键式”登录和注册可帮助您优化流程,以对应用程序中的用户进行身份验证。 对于许多Android应用而言,用户帐户是转化渠道的重要组成部分,也是用户流失的常见来源。 用户(以及开发人员!)经常忘记使用其登录的帐户或用于服务的密码。 通过优化流程,可以提高转化率并减少流失。

    Gif: Animated demo. One Tap to sign in and sign up. Reduce friction and improve conversion. Google Sign-In and Smart Lock.
    Showing One Tap for assisted sign in and sign up on Android
    显示一键协助登录并在Android上注册

    One Tap creates assisted sign in and sign up UIs which will augment your existing flows with a popup that lets your users authenticate frictionlessly. It does not replace your existing sign in or sign up flows, but helps you optimize the experience for users that choose to use the One Tap overlay.

    一键式创建辅助登录和注册用户界面,这将通过弹出窗口扩展您的现有流程,让您的用户轻松进行身份验证。 它不会替代您现有的登录或注册流程,但可以帮助您为选择使用“一键式”重叠式广告的用户优化体验。

    One Tap augments your existing sign in or sign up flows

    一键式扩展您现有的登录或注册流程

    One Tap supports

    一键支持

    • Signing in to an existing account with your service using their Google account or saved passwords

      使用服务使用他们的Google帐户或保存的密码登录到现有帐户

    • Signing up for a new account with your service using their Google account (federated login)

      使用其服务的Google帐户注册一个新帐户(联合登录)

    It ships with com.google.android.gms:play-services-auth version 18.0.0.

    随附com.google.android.gms:play-services-auth版本18.0.0

    一键式和Google身份服务 (One Tap and Google Identity Services)

    One Tap is part of a new suite of libraries currently in development called Google Identity Services. Google Identity Services will eventually incorporate the full feature set of the Smart Lock for Passwords and Google Sign-In libraries, as well as introduce new features. The Google Sign-In library lets you sign in with Google accounts (just like One Tap) as well as offering additional features such as the Google Sign-In button and the ability to request additional permissions. However, this is a work in progress and the first version does not yet implement the full feature set of these libraries.

    一键式开发是目前正在开发的一套新库的一部分,该库名为Google Identity Services。 Google Identity Services最终将结合Smart Lock for PasswordsGoogle Sign-In库的完整功能集,并引入新功能。 Google登录库可让您使用Google帐户登录(就像“一键通”一样),并提供其他功能,例如Google登录按钮和请求其他权限的功能。 但是,这是一项正在进行的工作,第一个版本尚未实现这些库的全部功能集。

    Google Identity Services will eventually unify both the Google Sign-In and Smart Lock for Passwords for Android developers

    Google身份服务最终将为Android开发人员统一Google登录和Smart Lock for Passwords

    One Tap is the first feature of Google Identity Service that we’re launching and it’s ready for use in applications today to optimize sign in and sign up flows. We’ll be working on adding the other features provided by the Google Sign-In and Smart Lock for Passwords libraries. These features include the ability to save passwords, sign in with the Google Sign-In button, request permissions to access user data such as drive content, perform auto and silent sign in using Google Sign-In, save idp credentials, and lookup phone numbers for autofill flows. We hope to launch many of these features in Google Identity Services later this year.

    “一键通”是我们正在启动的Google身份服务的第一个功能,现已可以在当今的应用程序中使用,以优化登录和注册流程。 我们将努力添加Google登录和Smart Lock for Passwords库提供的其他功能。 这些功能包括以下功能:保存密码,使用Google登录按钮登录,请求访问权限以访问用户数据(例如驱动器内容),使用Google登录执行自动和静默登录,保存IDP凭据以及查找电话号码自动填充流程。 我们希望今年晚些时候在Google身份服务中启动其中许多功能。

    Compared to the existing Google Sign-In and Smart Lock for Passwords UIs, we have found that users are more likely to successfully sign in with the One Tap UI. Also, they’re more likely to choose the correct account when logging back in — which helps them get into your app, avoids creating duplicate accounts, and cuts down on support requests. The web version of this UI, which launched previously, has led to a 2x increase in conversions for some websites.

    与现有的Google登录和Smart Lock for Passwords UI相比,我们发现用户更有可能通过One Tap UI成功登录。 此外,他们更有可能在重新登录时选择正确的帐户-这有助于他们进入您的应用程序,避免创建重复的帐户,并减少了支持请求。 先前启动的该用户界面网络版本使某些网站的转化次数增加了2倍。

    For existing apps, our recommendation is to evaluate adding One Tap to augment your existing sign in and sign up flows when it makes sense for your application and team (you don’t need to do it right away).

    对于现有应用程序 ,我们的建议是评估添加“一键式”以增加您现有的登录量,并在对您的应用程序和团队有意义的情况下注册流程(您无需立即进行操作)。

    Applications that need features of Google Sign-In or Smart Lock for Passwords that are not yet available can use both libraries today to add One Tap on top of existing flows, or wait for support to be added later this year.

    需要尚未使用Google登录或Smart Lock for Passwords功能的应用程序今天可以使用这两个库在现有流的顶部添加“一键式”,或者等待今年晚些时候添加支持。

    For new applications, we recommend using One Tap to create optimized sign in and sign up experiences.

    对于新应用程序 ,我们建议使用One Tap创建优化的登录和注册体验。

    One Tap does not replace the Google Sign-In button, but augments your app’s existing sign in and sign up flows. You can use One Tap in an application that has a Google Sign-In button to create an assisted sign in or sign up flow in addition to your existing button.

    一键式操作不会取代 Google登录 按钮,而是会扩展您应用程序现有的登录和注册流程。 您可以在具有Google登录按钮的应用程序中使用“一键式”创建除现有按钮之外的辅助登录或注册流程。

    一键辅助登录 (Assisted sign in with One Tap)

    Example screenshot of one tap dialog, text “Sign back in to Demo App with Google”

    Assisted sign in with One Tap shows an overlay to the user prompting them to re-sign in with a previously authorized account. The user must have signed in previously in order for it to be presented as a “sign in” option.

    “一键式”辅助登录会向用户显示一个叠加图,提示他们使用先前授权的帐户重新登录。 用户必须事先登录才能将其显示为“登录”选项。

    Warning: You must implement sign up with One Tap to cover a case when a user doesn’t have a previously authorized account. If you only implement sign in you’ll not show an overlay to users who haven’t used your app or service before.

    警告: 您必须实施“一键注册”以解决用户没有先前授权帐户的情况。 如果您仅实施登录,则不会向未曾使用过您的应用或服务的用户显示覆盖图。

    One Tap sign in is triggered by your code. Depending on your app, this may be triggered when the app first launches, or later when the user attempts to perform a guarded action.

    一键登录由您的代码触发。 根据您的应用程序,这可能在应用程序首次启动时触发,或者在用户尝试执行受保护的操作时触发。

    Once you’ve decided to start the sign in process, you can query to see if any accounts are available for sign in by calling beginSignIn on a SignInClient. For sign in flows, it’s important that you configure the sign in with setFilterByAuthorizedAccounts(true) to only return previously authorized (or signed in) accounts. You can read more in the docs.

    一旦你决定开始在过程中的符号,你可以查询,看是否有账户可用于登录通过调用beginSignInSignInClient 。 对于登录流程,使用setFilterByAuthorizedAccounts(true)配置登录以仅返回以前授权(或登录)的帐户很重要。 您可以在docs中阅读更多内容。

    The callback from beginSignIn will pass a PendingIntent that displays the overlay when launched. Then you call startIntentSenderForResult with the provided PendingIntent to display the modal login popup over the current activity.

    来自beginSignIn的回调将传递一个PendingIntent ,该PendingIntent在启动时显示覆盖。 然后,使用提供的PendingIntent调用startIntentSenderForResult ,以显示当前活动上方的模式登录弹出窗口。

    Flow chart: beginSignIn points to startIntentSenderForResult which shows overlay.
    Use the PendingIntent provided by the SignInClient to overlay the current Activity with a One Tap login dialog.
    使用 SignInClient 提供的PendingIntent 将当前 Activity 与“一键式”登录对话框 重叠

    One Tap can overlay on top of any Activity in your application

    一键式可以覆盖应用程序中任何活动的顶部

    The One Tap dialog can be displayed anywhere in your application. So, you can let the user get started using your app before asking them to sign in. This lets you build an optimized login flow for your application. Wherever you call startIntentSenderForResult, One Tap will overlay on top of that Activity.

    “一键式”对话框可以显示在应用程序中的任何位置。 因此,您可以让用户在要求他们登录之前开始使用您的应用程序。这可以为您的应用程序构建优化的登录流程。 无论您在哪里调用startIntentSenderForResult ,“一键式”都将叠加在该Activity顶部。

    Flow chart: Dialog result is sent to onActivityResult
    The result of the prompt is returned using onActivityResult
    使用onActivityResult返回提示的结果

    The user then signs in using One Tap, or cancels the prompt. Either way, the result is sent to onActivityResult. You use the same client to parse the result and either get a federated login (Google Sign-In), or a password. Then continue the login process as you normally would with your backend.

    然后,用户使用“一键式”登录,或取消提示。 无论哪种方式,结果都将发送到onActivityResult 。 您使用相同的客户端来解析结果,并获得联合登录名(Google登录)或密码。 然后像平常使用后端一样继续登录过程。

    一键协助注册 (Assisted sign up with One Tap)

    Example screenshot of one tap dialog, text “Sign up or sign in to the Demo App”

    If One Tap doesn’t find any authorized accounts for sign in, beginSignIn will call the failure listener instead of passing your application a PendingIntent. When this happens, you should repeat the query but this time look for accounts that can be used to sign up.

    如果One Tap找不到用于登录的任何授权帐户,则beginSignIn将调用失败侦听器,而不是将您的应用程序传递为PendingIntent 。 发生这种情况时,您应该重复查询,但是这次查找可用于注册的帐户。

    This time configure One Tap with setFilterByAuthorizedAccounts(false) and it will query for any valid accounts that could be used to sign up, as well as any accounts that were previously authorized. If any are found, you’ll get back a PendingIntent that you can use to show a sign up overlay. When prompted to sign up the user will be asked to give consent for sharing email and profile permissions.

    这次使用setFilterByAuthorizedAccounts(false)配置One Tap,它将查询可用于注册的任何有效帐户以及以前已授权的所有帐户。 如果找到任何内容,您将返回一个PendingIntent ,可用于显示注册叠加层。 当提示您签名时,将要求用户同意共享电子邮件和配置文件的权限。

    To recap, here’s the overall flow for a One Tap overlay.

    回顾一下,这是“一键式”叠加的总体流程。

    Flow chart showing to use setFilterByAuthorizedAccounts true, followed by false, then falling through to regular sign up
    Flow chart showing the one tap flow using setFilterByAuthorizedAccounts 流程图显示使用setFilterByAuthorizedAccounts的一键式流程

    And, that’s really it. There’s a bit more to the API to support passwords — but to support federated auth login that’s all you need.

    而且,确实如此。 该API还有更多功能来支持密码-但仅需支持联合身份验证登录即可。

    如何实现密码流程? (How do I implement my password flow?)

    You can think of a password login using One Tap as a password manager — the credentials will be stored and shared with your application just as if the user has typed them.

    您可以将One Tap用作密码管理器来进行密码登录-凭据将被存储并与您的应用程序共享,就像用户键入了凭据一样。

    One Tap uses the same password store as Autofill and Smart Lock for Passwords. So, if the user has ever saved a password using either of these for your app, it will be shown to the user as an account option on the One Tap prompt.

    一键式使用与“ 自动填充”“密码智能锁定 ”相同的密码存储。 因此,如果用户曾经使用过这两种密码为您的应用程序保存了密码,它将在“一键式”提示下以帐户选项的形式显示给用户。

    One Tap uses the same password store as Autofill and Smart Lock for Passwords

    一键式使用与自动填充和密码智能锁定相同的密码存储

    There are three basic password flows: retrieving saved credentials, inputting new credentials, and saving new credentials.

    共有三个基本密码流:检索保存的凭证,输入新凭证和保存新凭证。

    检索保存的密码凭证 (Retrieve saved password credentials)

    In the initial One Tap sign up flow, configure the beginSignInRequest to support passwords. Then, the user will be presented with any saved passwords as an option in the One Tap UI.

    在初始的“一键式”注册流程中,将beginSignInRequest配置为支持密码。 然后,将在One Tap UI中向用户显示所有保存的密码作为选项。

    .setPasswordRequestOptions(PasswordRequestOptions.builder()    .setSupported(true)    .build())

    使用密码登录用户 (Sign a user in with a password)

    If a user chooses a saved password from the One Tap UI, it’ll be provided to your app using onActivityResult. You should then login to your backend like you normally would as if the user had entered the password.

    如果用户从“一键式” UI中选择一个保存的密码,则将使用onActivityResult将其提供给您的应用。 然后,您应该像通常输入用户密码一样登录到后端。

    If the user doesn’t select an account with One Tap, you can show a regular username/password screen. One Tap doesn’t have a UI for password entry, so you’ll have to build this screen and implement login yourself.

    如果用户未通过“一键式”选择帐户,则可以显示常规的用户名/密码屏幕。 一键式没有用于输入密码的用户界面,因此您必须构建此屏幕并自行实现登录。

    One Tap doesn’t provide a UI for entering passwords, you have to build that to support entering new passwords

    一键式不提供用于输入密码的用户界面,您必须构建该界面以支持输入新密码

    登录后保存密码 (Save a password after login)

    After the user enters a password, prompt the user to save it using Autofill. The next time the user returns to your application the saved password will be available as an option in the One Tap sign in prompt.

    用户输入密码后,提示用户使用Autofill进行保存。 下次用户返回到您的应用程序时,“一键登录”提示中将提供保存的密码作为选项。

    Make sure you have optimized your app for Autofill to ensure that Autofill is able to successfully save your user credentials! To test saving credentials in Autofill on a device, install the test Autofill service linked from the docs — this lets you ensure that your Autofill implementation will work with all Autofill services. To learn more about optimizing your app for Autofill check out the codelab.

    确保已针对自动填充优化了应用程序,以确保自动填充能够成功保存用户凭据! 要在设备上的自动填充中测试保存的凭据,请安装从文档链接的测试自动填充服务-这样可以确保自动填充实施可与所有自动填充服务一起使用。 要了解有关针对自动填充优化应用程序的更多信息,请查看代码实验室

    After you optimize your app for Autofill, you can also consider integrating Smart Lock for Passwords which gives you even more control over password saving.

    在针对自动填充优化应用程序之后,您还可以考虑集成Smart Lock for Passwords ,从而使您可以更好地控制密码保存。

    学到更多 (Learn more)

    This blog post aimed to give you an overview of what One Tap offers your app, and an idea about how you would integrate it. One Tap offers the ability to assist users through sign in and sign up for Android — improving conversions and avoid drop-off. With a fairly small API it’s easy to augment your existing authorization flows with One Tap.

    该博客文章旨在为您概述One Tap为您的应用程序提供了什么,以及有关如何集成它的想法。 一键式提供了协助用户登录和注册Android的功能-改善了转换并避免了流失。 使用相当小的API,使用One Tap即可轻松扩展现有授权流程。

    Check out the One Tap documentation to learn more about integrating it into your app!

    查看One Tap文档,以了解有关将其集成到您的应用程序中的更多信息!

    翻译自: https://medium.com/androiddevelopers/one-tap-sign-in-for-android-apps-2259ce15bc2c

    展开全文
  • uniapp一键登录

    2021-06-15 14:37:26
    uniapp一键登录 官方指导 微信小程序预览效果 扫描公众号,了解更多实例分享: 参考 官方指导

    uniapp一键登录

    官方指导

    前端自学习自整理如下:

    用户服务协议地址:请填写具体地址

    const v_univerifyStyle =  {  
        "fullScreen": "false", // 是否全屏显示,默认值: "false"
        "backgroundColor": "#ffffff",  // 授权页面背景颜色,默认值:#ffffff
        "backgroundImage": "", // 全屏显示的背景图片,默认值:"" (仅支持本地图片,只有全屏显示时支持)  
        "icon": {  
            "path": "static/logo.png" // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo   
        },  
        "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":"false", // 条款勾选框初始状态 默认值: true   
            "textColor": "#BBBBBB", // 文字颜色 默认值:#BBBBBB  
            "termsColor": "#ef8200", //  协议文字颜色 默认值: #5496E3  
            "prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”  
            "suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”  
            "privacyItems": [  
                // 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效  
                {  
                    "url": '用户服务协议地址', // 点击跳转的协议详情页面  
                    "title": "用户服务协议" // 协议名称  
                }  
            ]  
        },
        "buttons": {  // 自定义登陆按钮
          "iconWidth": "45px", // 图标宽度(高度等比例缩放) 默认值:45px
          "list": [
            {
              "provider": "apple",
              "iconPath": "/static/apple.png" // 图标路径仅支持本地图片
            }, 
            {
              "provider": "weixin",
              "iconPath": "/static/wechat.png" // 图标路径仅支持本地图片
            }
          ]
        }
    }
    
    
    

    页面调出一键登录弹框

    <view v-if="is_can_univerify" class="" @click="univerify_login">一键登录</view>
    

    that.v_univerifyStyle 为上文定义的配置,that.is_can_univerify看是否显示一键登录按钮

    
    univerify_login(){
    				let that = this;
    				uni.preLogin({
    				    provider: 'univerify',
    				    success(){  //预登录成功
    				        // 显示一键登录选项
    						that.is_can_univerify = true ;
    						uni.login({
    						    provider: 'univerify',
    						    univerifyStyle:  that.v_univerifyStyle ,// 自定义登录框样式 //参考`univerifyStyle 数据结构`
    						    
    						  
    						    success(res){ // 登录成功
    						        console.log(res.authResult);  // {openid:'登录授权唯一标识',access_token:'接口返回的 token'}
    						        //请求公司服务器,开发后台已上传云函数供公司后台调用,后台也已申请通过得到了一键登录的参数
    						    },
    						    fail(res){  // 登录失败
    						        console.log(res.errCode)
    						        console.log(res.errMsg)
    						    }
    						})
    						
    				    },
    				    fail(res){  // 预登录失败
    						that.is_can_univerify = false ;
    				        // 不显示一键登录选项(或置灰)
    				    // 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器
    				        console.log(res.errCode)
    				        console.log(res.errMsg)
    				    }
    				})
    			},
    		
    

    有疑问,找客服

    地图轨迹预览效果

    扫描公众号,了解更多实例分享:
    实例分享

    参考

    官方指导

    展开全文
  • App一键登录接入详解

    千次阅读 2020-09-02 10:45:51
    越来越多的APP接入一键登录功能,这也是一种风向。 接入 下载 闪验官方SDK 我们先把demo.apk跑起来,体验一下,你可以发现很多细节问题。 当然demo工程也是一个非常好的参考,有的人喜欢直接库依赖demo工程,这种...
  • 极光一键登录集成手册 | Android

    千次阅读 2020-01-17 09:54:21
    之前有幸体验了 Mob 的一键登录,而今来体验下极光的一键登录,扫描二维码想下载个 Demo 体验玩一波,尴尬的是,扫出了维护中,本站暂时关闭,艾玛。此问题已反馈极光工作人员。 说句实在话,而今的互联网变更...
  • vCSOL一键登录
  • uniapp手机号一键登录

    2021-10-08 13:57:03
    uniapp手机号一键登录 先讲几个坑避免操作完以后会出bug无效喷我 部分机型会因为第一次在手机上编译普通基座无法触发手机号一键登录的弹框,这里当然是重启了,重启可以解决百分之八十的问题!!! 然后就是细心...
  • 将您的登录信息存储在一个地方。所以,你可以通过单击轻松登录 支持语言:English (United States)
  • 点击上方蓝字关注我们技术总监面试,提问:Redis热点key解决方案一、关于秒验(一键登录)基本原理秒验(一键登录)产品整合了三大运营商特有的数据网关认证能力,升级短信验证码体验,应用于...
  • Flutter手机号一键登录

    千次阅读 2021-01-23 17:42:54
    手机号一键登录基本上是App的标配,Flutter在这方面也有了一些支持,本篇我们采用极光的jverify插件来实现手机号一键登录的支持。 1. 极光手机号登录插件介绍 首先,我们登录到flutter.dev搜索下jverify插件 可以...
  • 一键登录测试

    2021-03-06 14:37:12
    一、关于秒验(一键登录): 秒验(一键登录)产品整合了三大运营商特有的数据网关认证能力,升级短信验证码体验,应用于用户注册、登陆、支付、安全校验等场景,可实现用户无感知校验,操作更安全、便捷、低时延的...
  • 本地手机号一键登录 以及第三方登陆
  • 手机号码一键登录

    2021-05-16 11:51:36
    一键登录绑定到某个服务空间 config.json文件配置 "univerify": { "appid":"__UNI__38A4311", "apiKey": "535d2efd06f6beb899151f85352eab5b", "apiSecret": "e69832a2764051d972b5ce2955ee5d29" } ...
  • 点击领取:程序员最新学习资料!来源:juejin.im/post/5d197adff265da1bb31c4fa9我们先来看一下目前的一些登录方式:账号、密码登陆使用账号加密码是最传统的...
  • App一键登录(java后端)

    千次阅读 2020-06-24 13:25:23
    我这里使用的袤博的一键登录,其他类型的在之后会慢慢加入 袤博的一键登录,http://wiki.mob.com/ 工具类 OneLoginUtils 代码可以自己优化 public class OneLoginUtils { private static String appkey = "****...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,048
精华内容 16,419
关键字:

一键登录