将 Python 中的 Google Cloud 函数连接到 Google Search Console API

问题描述

我想用 Python 创建一个谷歌云函数

  • 连接到 Google Search Console API
  • 提取数据
  • 将其导入 BigQuery

我可以找到各种代码示例来通过 OAuth、密钥等进行身份验证和连接,但是这些似乎都适用于本地运行的 Python 脚本,而不是在云中。 (我需要它在云端运行,无人值守)。

Google 文档说,在 Cloud Function 中,可以使用“应用认凭据 (ADC) 自动查找您的服务帐户凭据”自动进行身份验证。

代码示例例如连接到 Cloud Storage 并对其进行身份验证:

def implicit():
    from google.cloud import storage

    # If you don't specify credentials when constructing the client,the
    # client library will look for credentials in the environment.
    storage_client = storage.Client()

    # Make an authenticated API request
    buckets = list(storage_client.list_buckets())
    print(buckets)

但是,我找不到任何关于如何创建将通过 ADC 机制进行身份验证的 Google Search Console 客户端的文档。

请帮忙!

解决方法

给你。

文档链接:https://developers.google.com/webmaster-tools/search-console-api-original/v3/samples

Github 代码示例链接:https://github.com/googleapis/google-api-python-client/blob/master/samples/searchconsole/search_analytics_api_sample.py

,

根据Search API documnetation OAuth 2.0 是唯一的方法:

您的应用程序必须使用 OAuth 2.0 来授权请求​​。不支持其他授权协议。

云存储在 Python(以及其他语言)中有方便的 API,它正在处理这种 ADC 身份验证。说到Google Search API,我不是很熟悉,但是我查过example code。在示例中,如果我理解正确,身份验证是在 api 之外使用 oauth2client 完成的。

但是,我敢肯定,您也可以使用 Cloud Function 中的 OAuth 2.0 来实现,原因与您在本地使用完全相同。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...