如何使用Javascript从Google Api检索服务帐户OAuth2令牌?
我需要使用GoogleProjects服务帐户来使用JavaScript访问GoogleAPI。为了做到这一点,我需要将OAuth2连接到google API服务器,以获取身份验证令牌如何使用Javascript从Google Api检索服务帐户OAuth2令牌?,javascript,google-api,google-oauth,service-accounts,Javascript,Google Api,Google Oauth,Service Accounts,我需要使用GoogleProjects服务帐户来使用JavaScript访问GoogleAPI。为了做到这一点,我需要将OAuth2连接到google API服务器,以获取身份验证令牌 我知道Google提供了一个用于节点服务器的库(GAPI),但我需要一个能够在其他安全JavaScript环境中工作的解决方案。这项任务有两个主要部分 配置 编码 首先执行配置步骤 如果您没有google帐户: 导航到 查找并单击“登录” 单击“更多选项” 单击“创建帐户” 按照以下步骤创建帐户 导航到api
我知道Google提供了一个用于节点服务器的库(GAPI),但我需要一个能够在其他安全JavaScript环境中工作的解决方案。这项任务有两个主要部分
- 如果您没有google帐户:
- 导航到
- 查找并单击“登录”
- 单击“更多选项”
- 单击“创建帐户”
- 按照以下步骤创建帐户
- 导航到api仪表板:
- 通过单击当前项目来选择或创建项目。我展示的项目叫做“我的项目”
- 单击并启用您计划使用的API
- 导航到凭据部分:
- 单击并选择“服务帐户密钥”
- 如果您创建了一个新的服务帐户,为了进行测试,请将角色设置为“项目”“所有者”。你最终会想了解一下谷歌Api的角色。看到和
- 确保“密钥类型”为“Json”,然后单击“创建”。您的密钥/证书将自动下载
- 首先下载并添加对“jsrsasign-all-min.js”的引用。如果需要,可以从github下载“jsrsasign-all-min.js”
- 第二步使用您的证书/密钥(先前下载)更新以下脚本:
- 当您测试代码时,您应该会收到一个带有auth令牌的json对象。您可以这样测试您的实现:
postJWT(getJWT(text), function(){ let token = JSON.parse(response).access_token; //Do your api calls here using the token. //Reuse the token for up to 1 hour. });
{
"access_token": "ya29.c.ElkABZznrLNLK6ZAq2ybiH5lsRJpABE8p7MlZZJ0WCKcDNDv75lh-o1iRX__uMNUKSySiawm4YJGsbfqJH2JH61nRK6O2m0GJR7DgkEmo6ZlKtrvzke9C3xpwA",
"token_type": "Bearer",
"expires_in": 3600
}
请注意,这种方法要求可以从javascript环境访问密钥/证书。如果此环境为公共环境,则您的api易受攻击。您好,我想知道如何结合调用google analytics来使用此环境api@Elvira我已经更新了代码,以反映应该将api调用放在哪里。如果您需要使用令牌设置api调用的帮助,请提出新问题并标记我或将其链接到此处,以便我可以提供帮助。我将尽力留意它。我已成功地按照上面的说明操作,并且我能够登录并检索服务帐户的令牌。然而,当我试图从gapi获取日历数据时,我得到了一个空数组。这里有谁能帮忙并提供一些建议吗?你能阅读日历或其他东西吗?您可以写入日历或其他api吗?您可能没有日历权限,但我无法确切说明您的问题所在。要导入jsrsasign,我已下载了.js文件,并在getJWT()函数中添加了以下三行:var imported=document.createElement('script');imported.src='jsrsasign-all-min.js';文件.头.子项(导入);
{
"access_token": "ya29.c.ElkABZznrLNLK6ZAq2ybiH5lsRJpABE8p7MlZZJ0WCKcDNDv75lh-o1iRX__uMNUKSySiawm4YJGsbfqJH2JH61nRK6O2m0GJR7DgkEmo6ZlKtrvzke9C3xpwA",
"token_type": "Bearer",
"expires_in": 3600
}