Google我的商家:如何在无需用户交互的情况下生成访问令牌

问题描述

我想使用Google我的商家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 

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

解决方法

我的问题得到了答案。

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

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

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

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