如何在 Docker 中授权 Google API

Posted

技术标签:

【中文标题】如何在 Docker 中授权 Google API【英文标题】:How to authorize Google API inside of Docker 【发布时间】:2021-08-06 20:52:24 【问题描述】:

我在 Docker 中运行一个应用程序,需要我利用 google-bigquery。当我在 Docker 之外运行它时,我只需要转到下面的链接(已编辑)并授权。但是,当我从 Docker 终端复制粘贴它时,该链接不起作用。我也尝试过端口映射,也没有运气。

代码:

credentials = service_account.Credentials.from_service_account_file(
    key_path, scopes=["https://www.googleapis.com/auth/cloud-platform"],
)
# Make clients.
client = bigquery.Client(credentials=credentials, project=credentials.project_id,)

回复:requests_oauthlib.oauth2_session - DEBUG - Generated new statePlease visit this URL to authorize this application:

【问题讨论】:

【参考方案1】:

请查看可用的解决方案on this page,它会不断更新。

gcloud 凭据助手 独立的 Docker 凭据助手 访问令牌 服务帐号密钥

简而言之,您需要使用service account key 文件。确保您使用 Secret Manager,或者您只是为 Docker 映像发布服务帐户密钥文件。

您需要在构建或运行时将服务帐户密钥文件放入 Docker 容器中。

【讨论】:

我有一个服务帐户密钥。只是当我在上面的响应中单击该链接时,它会将我带到 This page is not working 网页。这可能不是 Docker 问题,因为我现在正在本地机器上获取它。它通常在第一次工作,但不是以后的时间。 应该没有链接,如果您有链接,则意味着 PERSON 需要将某些东西授权为 OAuth。可以将服务帐户密钥文件添加到代码中,并且可以正常工作。重新访问您的代码,因为您可能使用错误。 有趣。我通常在 Jupyter 笔记本中运行它,它会自动将我带到该站点并进行身份验证(如果我已登录),但这是来自 Docker 容器。很奇怪。谢谢。

以上是关于如何在 Docker 中授权 Google API的主要内容,如果未能解决你的问题,请参考以下文章

Google Adwords API with OAuth2 如何获取授权用户的电子邮件?

如何从 Windows 服务授权 Google Sheets API

如何使用 OAuth2 授权 Google 分析数据 API

Youtube Data API - 如何避免 Google OAuth 重定向 URL 授权

使用服务帐户时如何修复 google ads api 未经授权的错误

Rails 6 API + React + Google login:登录后如何授权用户访问某些服务器路由?