是否可以在没有 OAuth2 身份验证对话框的情况下从 Google App-Engine (python) 连接和查询 BigQuery 表?
Posted
技术标签:
【中文标题】是否可以在没有 OAuth2 身份验证对话框的情况下从 Google App-Engine (python) 连接和查询 BigQuery 表?【英文标题】:Is it possible to connect and query a BigQuery table from Google App-Engine (python) without OAuth2 authentication dialog? 【发布时间】:2017-01-19 22:51:16 【问题描述】:我正在开发一个 Google App-Engine 项目,该项目在数据存储区中存储了大约 10 万个实体。由于我必须在这些实体的字符串属性中进行搜索,因此我必须找到一种有效的方法。
经过一番研究,我发现 Google 的 BigQuery 服务看起来非常适合我。我已经通过网络界面将实体导入 BigQuery,但我无法从 App-Engine 代码连接并在 BigQuery 上运行查询。
我的 App-Engine 项目没有网络界面。它只生成移动应用程序使用的 JSON 输出。
所以,我的问题是:是否可以在没有 OAuth2 身份验证对话框的情况下从 App-Engine python 代码连接和运行查询?
【问题讨论】:
【参考方案1】:是的。只需使用here 所述的所谓“服务帐户”即可。然后,在您导出 GOOGLE_APPLICATION_CREDENTIALS
以指向凭据文件后,一些简单的 Python 代码:
from google.cloud import bigquery
client = bigquery.Client(project='PROJECT_ID')
for dataset in client.list_datasets():
do_something_with(dataset)
更多信息here。
【讨论】:
谢谢格雷厄姆。我已经尝试过了,但我总是收到此错误消息:“从 google.cloud 导入 bigquery ImportError:没有名为 cloud 的模块”。我以为我必须先将 google-api-python-client 库“供应”到我的项目中,但每次尝试都失败了。 是的,需要安装模块:pip install --upgrade google-cloud
再次感谢您,格雷厄姆。你为我节省了无数个小时。我对这个话题很困惑,但现在我可以在黑暗中看到光明:)
没问题!很高兴我能帮上忙。【参考方案2】:
请注意,这是区分大小写的 - 检查“客户”的大写;
my_bigquery_client = bigquery.client(project = 'my_project')
- 失败并出现错误 "TypeError: 'module' object is not callable"
my_bigquery_client = bigquery.Client(project = 'my_project')
- 这行得通。
【讨论】:
以上是关于是否可以在没有 OAuth2 身份验证对话框的情况下从 Google App-Engine (python) 连接和查询 BigQuery 表?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 Spring Security 中仅使用刷新令牌请求访问令牌 oauth2?没有基本身份验证?
是否可以在不重定向到外部登录页面的情况下进行 SPA 身份验证
如何在不访问身份验证服务器的情况下验证 OAuth2 访问令牌 (JWT)