Google Developers Console的设置可能很复杂,这也是我有时不愿使用其中一种Google API的原因之一。本文旨在使其易于使用
本文介绍了如何使用Google Developers Console对任何Google API进行身份验证。
开发人员控制台可能很难正确设置,这也是我有时对使用一种Google API有所抵触的原因之一。
让我们以一种非常简单的方式来看一下它是如何工作的。
本指南假定您已经有一个Google帐户。
创建一个新的Google API项目
如果尚未完成,请创建一个新项目。
在仪表板中,单击创建一个新项目。
给它起一个名字,您将被重定向到项目仪表板:
通过单击添加API启用API和服务。
从列表中搜索您感兴趣的API
并启用它
而已!
现在该项目已准备就绪,您可以继续创建身份验证凭据。
创建身份验证凭证
使用Google API进行身份验证的方式有3种:
- OAuth 2
- 服务到服务
- API密钥
API密钥的安全性较差,并且在范围和使用方面受到Google的限制。
OAuth 2旨在让您的应用代表用户发出请求,因此该过程比所需的更为复杂,并且需要公开URL来处理回调。太简单了,使用起来太复杂了。
在“服务到服务”身份验证模型中,应用程序使用服务帐户和JSON Web令牌直接与Google API对话。
这是最简单的方法,尤其是当您要构建从服务器(例如Node.js应用程序)与Google API通信的原型或应用程序时。这是我将要测试本文的一种方法。
服务到服务API
要使用此方法,您需要先生成一个JSON密钥文件通过Google Developers Console。
还有另一个选项,涉及下载
.p12
文件,然后将其转换为pem
文件使用openssl
命令。 Google不再推荐,只需使用JSON。
在项目仪表板中,单击创建凭证,然后选择服务帐号密钥:
填写表单,然后选择“ JSON”密钥类型:
而已! Google向您发送了一个JSON文件:
这是此JSON文件的内容,称为JSON密钥文件:
{
"type": "service_account",
"project_id": "...",
"private_key_id": "...",
"private_key": "...",
"client_email": "...",
"client_id": "...",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "..."
}
使用JSON密钥文件
最简单的方法是将JSON文件放在程序可访问的文件系统上。
例如我有一个测试应用程序~/dev/test
,因此我将JSON文件放入该文件夹,并将其重命名为auth.json
。然后在Node.js应用程序内部,确保GOOGLE_APPLICATION_CREDENTIALS环境变量指向文件系统上的该文件位置。
您创建一个JSON Web令牌使用文件中包含的属性:
const jwt = new google.auth.JWT(key.client_email, null, key.private_key, scopes)
并将其传递给您提出的任何API请求。
这是如何与Google Analytics(分析)API一起使用的示例。process.env.GOOGLE_APPLICATION_CREDENTIALS
最好在程序外部设置,但为了清楚起见,我在源代码中添加了它:
'use strict'
const { google } = require(‘googleapis’)
const key = require(’./auth.json’)
const scopes = ‘https://www.googleapis.com/auth/analytics.readonly’
const jwt = new google.auth.JWT(key.client_email, null, key.private_key, scopes)
const view_id = ‘XXXXXXX’
process.env.GOOGLE_APPLICATION_CREDENTIALS = ‘./auth.json’
jwt.authorize((err, response) => {
google.analytics(‘v3’).data.ga.get(
{
auth: jwt,
ids: ‘ga:’ + view_id,
‘start-date’: ‘30daysAgo’,
‘end-date’: ‘today’,
metrics: ‘ga:pageviews’
},
(err, result) => {
console.log(err, result)
}
)
})
使用环境变量
在许多情况下,这是不理想的,在这种情况下,在文件系统上拥有您的私人信息不切实际或不安全。例如,如果您使用的是Heroku,则最好避免将身份验证凭据放入存储库中,而应通过Heroku提供的界面或控制台进行设置。
还是在上面使用它的情况毛刺原型,其中环境变量对您以外的所有人都是隐藏的。
在这种情况下,最好的办法是使用环境变量,并存储JSON文件中所需的内容。在以下示例中,我们需要的是client_email
和private_key
在JSON中设置的变量,因此我们可以提取这些变量并将其设置为环境变量,以保持它们的私密性。
'use strict'
const { google } = require(‘googleapis’)
const scopes = ‘https://www.googleapis.com/auth/analytics.readonly’
const jwt = new google.auth.JWT(
process.env.CLIENT_EMAIL,
null,
process.env.PRIVATE_KEY,
scopes
)
const view_id = ‘XXXXXXX’
jwt.authorize((err, response) => {
google.analytics(‘v3’).data.ga.get(
{
auth: jwt,
ids: ‘ga:’ + view_id,
‘start-date’: ‘30daysAgo’,
‘end-date’: ‘today’,
metrics: ‘ga:pageviews’
},
(err, result) => {
console.log(err, result)
}
)
})
访问其他API
我在示例中使用了Google Analytics(分析)。
这google
对象使它可到达google.analytics('v3')
。
v3
是API版本。
其他API可以通过类似的方式访问:
google.urlshortener('v1')
google.drive('v2')
更多服务教程:
- 如何开始使用Firebase托管
- 在Netlify上托管静态站点的教程
- Web开发人员的代码插入程序和格式化程序
- 自动触发器部署在Netlify上
- Glitch,一个伟大的开发人员平台
- 适用于开发人员的Airtable API
- 如何通过任何Google API进行身份验证
- Zeit Now教程
- Netlify Lambda函数教程
- 如何将Firebase Firestore用作数据库
- 我如何修复Netlify重写中的结尾斜杠
- 如何在Netlify函数中访问查询参数
- 如何在Netlify函数中使用环境变量
- 如何在Netlify函数中使用npm软件包
- 如何在DigitalOcean上创建第一个VPS