【问题标题】:Connect to google search console API from Node.js从 Node.js 连接到谷歌搜索控制台 API
【发布时间】:2022-01-27 00:40:12
【问题描述】:

我正在尝试从谷歌搜索控制台https://www.googleapis.com/webmasters/v3/sites 获取数据,但从节点后端而不是前端获取数据,我在谷歌 api 控制台上创建了 OAuth 2.0 客户端 ID 和 API 密钥。但是我可以找到连接的方式。

我正在关注本指南https://googleapis.dev/nodejs/googleapis/latest/searchconsole/index.html

我只是希望能够从节点发出读取请求。

我试过了

import { google } from 'googleapis'

const auth = new google.auth.OAuth2(
  YOUR_CLIENT_ID,
  YOUR_CLIENT_SECRET,
  YOUR_REDIRECT_URL
);

google.options({ auth })

const searchconsole = google.webmasters({ version: 'v3', auth })

const sites = await searchconsole.sites.list({})
console.log(sites)

即使您的所有凭据都正确,我也会收到此错误

'Error: No access, refresh token, API key or refresh handler callback is set.'

【问题讨论】:

  • 尝试查看Google drive 的示例,它将向您展示authorizaotn 应该如何工作。只需更改网站管理员的驱动服务即可工作
  • 授权不是问题,问题是与searchconsole交互获取站点列表
  • 你需要先创建一个服务 const service = google.webmasters({version: 'v3', auth});
  • 谢谢,该服务有效,但我找不到与此service 交互以获取此https://www.googleapis.com/webmasters/v3/sites 的文档
  • 要么检查源代码,要么只查找与文档 developers.google.com/webmaster-tools/… 同名的方法,应该有类似 service.sites.list 的内容,该库是从 api 的发现文档生成的,所以它应该与文档完美匹配。

标签: javascript node.js oauth-2.0 google-api google-search-console


【解决方案1】:

根据 cmets 的说法,您似乎已经获得了授权部分,现在,如果您想列出站点以获取授权用户拥有的每个站点的搜索分析数据,您可以执行以下代码:

Use Google Search Console API                                                                                 Run in Fusebit
const webmasters = googleClient.webmasters('v3');

// List the owned sites
const sites = await webmasters.sites.list({});
const sitesAnalytics = [];
  
for await (const site of sites.data.siteEntry) {
  const response = await webmasters.searchanalytics.query({
    siteUrl: site.siteUrl,
    requestBody: {
      startDate: '2021-01-01',
      endDate: new Date().toISOString().split('T')[0],
     },
   });

  sitesAnalytics.push({ site, analytics: response.data});
}

console.log = `Got a successful response from Google Search Console: ${JSON.stringify(sitesAnalytics)}`;


【讨论】:

  • 谢谢鲁本,但我的问题是我的浏览器上出现授权的弹出窗口,因为我在我的本地机器上,但这将用于生产网络服务器,网络服务器如何没有的话打开浏览器?
  • 我不知道您的实现细节,但由于用户需要授权您的应用程序以特定权限与 Google API 交互,因此仍然需要从浏览器进行。用户授权应用程序后,您需要配置一个回调 URL,您需要在其中正确处理访问令牌(发生在您的服务器中)的代码交换(从 Google 返回) - 您可以在此处阅读更多信息developers.google.com/identity/protocols/oauth2/web-server跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多