vue调用用在很多场景,今天为大家介绍如何用谷歌授权登录获取用户通讯录
当前背景
业务端要求,用户本人填写信息,推荐到朋友,要求可以导出用户谷歌邮箱的通讯录,让用户选择,并且回显到页面 ##步骤
在谷歌开发者平台, 创建一个项目,我的理解是,我们的页面就是这个项目,要由我们的项目,对谷歌发起授权请求,就类似微信小程序,向官方发起授权,请求昵称和头像的这个场景,所以,后面我们的这个项目也要通过谷歌的审核。
来到api服务
下面进入到项目管理后台
然后要创建一个用户凭据,拿到我们项目的id和key
配置下面的域名,也就是让谷歌知道,用户从哪个域名发起请求事合理的,可以用本地localhost进行测试。提醒注册不能用局域网IP。
然后在API库中,选择我们要用的API,我的需求是获取通讯录,所以我启用了people API。
这样就会在API库里,都会有用法和说明,我是自己去他的git上拉取的,看了下代码流程,然后自己改动,git上的代码很简洁
OAuth 同意屏幕 就是我们的应用在授权时,会跳出如下的界面
以上屏幕就是统一,假如我们的应用没有通过谷歌的验证,那出现的提示就会以应用不安装。
想要通过,看看下面官方流程:
一般在开发的时候,只是发布到正式了,没通过就是了。在开发环境没问题。
这样就可以拿到数据。 以下全部的代码
// 初始化谷歌授权登录 initClient() { // Client ID and API key from the Developer Console let CLIENT_ID = '你申请的ID', API_KEY = '你申请的密码', // Array of API discovery doc URLs for APIs used by the quickstart DISCOVERY_DOCS = [ 'https://www.googleapis.com/discovery/v1/apis/people/v1/rest', ], // Authorization scopes required by the API; multiple scopes can be // included, separated by spaces. SCOPES = 'https://www.googleapis.com/auth/contacts.readonly', authorizeButton = document.getElementById('authorize_button'), that = this gapi.client .init({ // apiKey: API_KEY, clientId: CLIENT_ID, discoveryDocs: DISCOVERY_DOCS, scope: SCOPES, }) .then( function () { console.log('谷歌登录初始化成功') // Listen for sign-in state changes. gapi.auth2 .getAuthInstance() .isSignedIn.listen(that.updateSigninStatus) // Handle the initial sign-in state. // that.updateSigninStatus( // gapi.auth2.getAuthInstance().isSignedIn.get() // ) authorizeButton.onclick = that.handleAuthClick }, function (error) { console.log(error) // appendPre(JSON.stringify(error, null, 2)) } ) }, /** * Called when the signed in status changes, to update the UI * appropriately. After a sign-in, the API is called. */ updateSigninStatus(isSignedIn) { // 是否登录 if (isSignedIn) { console.log('已登录') this.listConnectionNames() } else { console.log('未登录') } }, /** * Sign in the user upon button click. */ handleAuthClick() { // 是否登录 let flag = gapi.auth2.getAuthInstance().isSignedIn.get() if (flag) { // 如果已经登录,就直接弹出窗口 this.listConnectionNames() } else { // 未登录就调用出登录授权 gapi.auth2.getAuthInstance().signIn() } }, /** * Sign out the user upon button click. */ handleSignoutClick(event) { gapi.auth2.getAuthInstance().signOut() }, listConnectionNames() { let peopleMsg = [], that = this gapi.client.people.people.connections .list({ resourceName: 'people/me', pageSize: 100, personFields: 'names,emailAddresses', }) .then(function (response) { var connections = response.result.connections if (connections.length > 0) { for (let i = 0; i < connections.length; i++) { var person = connections[i] if (person.names && person.emailAddresses) { let obj = { name: person.names[0].displayName, email: person.emailAddresses[0].value, id: i, } peopleMsg.push(obj) } } } else { that.$message({ message: 'No connections found.', type: 'warning', }) } that.peopleMsg = peopleMsg that.popDialog(peopleMsg) }) .catch((err) => { console.log(err) }) }, // 在mounted的时候初始化一下窗口 mounted() { // 谷歌登录授权初始化 gapi.load('client:auth2', that.initClient) },
以上就是关于用vue调用谷歌授权登录获取用户通讯录的实现的叙述。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/127617.html
摘要:传统的网页编程采用的三剑客来实现,在微信小程序中同样有三剑客。观察者模式不难实现,重点是如何在微信小程序中搭配其特有的生命周期来使用。交互事件传统的事件传递类型有冒泡型与捕获型,微信小程序中自然也有。 本文由作者邹永胜授权网易云社区发布。 简介为了更好的展示我们即时通讯SDK强悍的能力,网易云信IM SDK微信小程序DEMO的开发就提上了日程。用产品的话说就是: 云信 IM 小程序 S...
摘要:参数格式为,其中为,仅支持一层字典否调用成功的回调函数否调用失败的回调函数否调用结束的回调函数调用成功失败都会执行警告框。 概述 OpenApp+ 一个小程序容器,配置简单、功能完善、界面流畅、开箱即用!使用OpenApp+可以快速扩展你的APP,使其拥有与微信一样的功能扩展可能,让App的所有的功能都通过小程序来实现,动态更新,更快的响应用户需求。其拥有的管理具备版本管理功能,让功能...
摘要:请欣赏手把手教程后端博客系统文章系统掘金本期主要是文章保存功能,涉及到草稿文章发布历史这三个要点。一谈谈连接管理后端掘金连接管理概述最近重读了权威指南部分章节,结合来对部分内容进行印证并记录下来。 Spring Boot干货系列:(四)开发Web应用之Thymeleaf篇 | 掘金技术征文 - 掘金原文地址:Spring Boot干货系列:(四)开发Web应用之Thymeleaf篇博客...
阅读 499·2023-03-27 18:33
阅读 706·2023-03-26 17:27
阅读 606·2023-03-26 17:14
阅读 575·2023-03-17 21:13
阅读 498·2023-03-17 08:28
阅读 1753·2023-02-27 22:32
阅读 1259·2023-02-27 22:27
阅读 2065·2023-01-20 08:28