谷歌 BigQuery 身份验证

Posted

技术标签:

【中文标题】谷歌 BigQuery 身份验证【英文标题】:Google BigQuery authentication 【发布时间】:2020-02-04 16:23:29 【问题描述】:

我想像使用其他 Google 服务(例如,Google 表格)一样使用 Google BigQuery 身份验证。

Google 表的身份验证适用于范围,并向用户显示一个弹出窗口,例如“应用 XXX 请求访问您的 Google 帐户”,在此弹出窗口中,您可以看到哪些权限应用程序需要。

我会使用 Google BigQuery 进行相同的身份验证,但在阅读文档后,查看官方 php 客户端的代码,我无法理解如何进行此身份验证。这可能吗?

附:显然,我使用从谷歌开发者控制台生成的 JSON 尝试了谷歌文档中的流程,它工作正常。

【问题讨论】:

澄清一下:您想将 BigQuery 连接到其他 Google 服务吗?你能列出它们吗?如果你想连接到谷歌表格,有这个文档cloud.google.com/blog/products/g-suite/… 不,我有一个与 BigQuery 交互的网络应用。最终用户必须使用经典的 OAuth(如 google 表格和其他 Google 服务)进行日志记录,但我无法使用 BigQuery 进行记录。我遵循文档,可以使用带有凭据的 JSON 进行日志记录,但我不想使用此过程。 【参考方案1】:

你想做的事是不可能的。至少以你想要的方式。

使用"native" GCP 产品时,登录后会自动执行 OAuth 身份验证。这就是为什么在访问 GCS 存储桶或进入应用程序时不会提示您进行身份验证的原因引擎仪表板。

当您想授予外部用户对您的项目的访问权限时,您可以运行命令gcloud auth login。授权屏幕如下所示:

此屏幕还显示给"non-native" GCP 服务,例如BigQuery Geo Viz、Dialogflow 等。您会被提示授予访问权限,因为这些是与您项目的内部信息交互的“外部”GCP 功能。

BigQuery 是一项集成的 GCP 服务,通过 UI 使用时不需要 OAuth 身份验证。

如果您想与 BigQuery API 进行交互,我强烈建议您使用BigQuery Client libraries,它可以更轻松地完成身份验证方法。

但是,有一种方法可以授予外部用户访问权限。我找到了Authorizing API requests doc,据说您可以为外部用户获取临时访问令牌。这是通过以下步骤完成的:

    在 Cloud Shell 会话中运行命令 gcloud auth application-default print-access-token

    复制输出并将其粘贴到 HTTP 请求中,例如

    https://www.googleapis.com/bigquery/v2/projects/$GOOGLE_CLOUD_PROJECT/datasets?access_token=ACCESS_TOKEN
    

请注意,这可能会导致比客户端库所需的更多工作量。

希望这有帮助。

【讨论】:

以上是关于谷歌 BigQuery 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何使用服务帐户和 bigquery 包进行身份验证?

谷歌身份验证器丢失如何找回,谢谢

如何“请进行人机身份验证”.在谷歌学术中进行搜索,显示“请进行人机身份验证”啥意思?如何验证呢。

使用 R Markdown 文档中的 bigrquery 对 Bigquery 进行身份验证

在 Python 中运行 BigQuery SQL 查询,如何进行身份验证?

请问我的华为手机为啥不能进行谷歌身份验证(已生成验证码但不能用)?