【问题标题】:Google My Business: How to generate access token without user interactionGoogle My Business:如何在没有用户交互的情况下生成访问令牌
【发布时间】:2021-01-20 12:45:45
【问题描述】:

我想使用 Google My Business API 通过我的组织帐户详细信息搜索和管理我们客户的业务。

我想使用 API 作为代理,因为我想管理客户的业务。

我已提交 API 访问表单并获得使用 API 的确认。 此外,我还在同一个帐户中生成了 OAuth 凭据和服务帐户。

但根据 GMB API 文档,我们需要传递访问令牌才能访问 API。

我已经查看了使用 OAuth 和服务帐户的身份验证过程。 根据我的要求,我想直接从我的 NodeJS 服务器代码在后端生成访问令牌,而无需用户交互。

我想使用我的帐户详细信息来使用 API,因此需要获得用户的许可,因为我不需要任何用户信息。

我已尝试将以下内容用作服务帐户,但它返回错误。

const keys = require("./config/gmb.json");
const {OAuth2Client,GoogleAuth,JWT} = require('google-auth-library');
const client = new JWT({
   email: keys.client_email,
   key: keys.private_key,
   scopes: ['https://www.googleapis.com/auth/business.manage'],
});
console.log(client.credentials);  // It returns refresh_token=jwt-placeholder, expiry_date=1
const tokenInfo = await client.getTokenInfo(client.credentials.access_token); // It returns Error: invalid_token 

所以任何人对此都有想法。 您的帮助将不胜感激。

【问题讨论】:

  • 你遇到了什么错误@kc1994
  • 嗨@Xcode,请检查我的问题,我在评论中提到了代码块中的错误。实际上,我想通过我们的应用程序使用 GMB API 来管理客户的业务,但我不知道如何为此创建 OAuth 流程,因为我想在后端添加业务而无需用户交互。

标签: node.js google-authentication google-api-nodejs-client google-my-business-api google-auth-library-nodejs


【解决方案1】:

我的问题得到了答案。

如果我们想首先获取任何用户帐户的访问令牌,我们需要提示用户进行 OAuth,一旦用户授予其帐户权限,我们需要使用刷新令牌存储用户帐户详细信息,一旦我们提供了谷歌将提供的刷新令牌完成用户 OAuth 过程。

现在,每当我们需要任何用户帐户的访问令牌时,我们都可以使用完成 OAuth 过程后存储的用户帐户详细信息的刷新令牌来获取它。

注意: 如果用户更改其帐户密码或某些影响用户隐私的详细信息,刷新令牌可能会过期。

我已经完成了这个 OAuth 过程并在 NodeJs 中获取了用户的访问令牌。

【讨论】:

    猜你喜欢
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    相关资源
    最近更新 更多