首页 > 解决方案 > Google My Business:如何在没有用户交互的情况下生成访问令牌

问题描述

我想使用 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 

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

标签: node.jsgoogle-authenticationgoogle-api-nodejs-clientgoogle-my-business-apigoogle-auth-library-nodejs

解决方案


我得到了我的问题的答案。

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

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

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

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


推荐阅读