Google 我的业务:如何在没有用户交互的情况下生成访问令牌

Google My Business: How to generate access token without user interaction

我想使用 Google 我的企业 API 来搜索和管理使用我的组织帐户详细信息的客户的企业。

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

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

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

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

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

我已尝试将以下内容用作服务帐户,但 returns 出错。

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 

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

我得到了问题的答案。

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

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

注: 如果用户更改了他的帐户密码或一些影响用户隐私的细节,刷新令牌可能会过期。

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