Google App Engine - 请求 BigQuery API 时出现 401

Posted

技术标签:

【中文标题】Google App Engine - 请求 BigQuery API 时出现 401【英文标题】:Google App Engine - 401 when requesting BigQuery API 【发布时间】:2017-01-21 21:38:37 【问题描述】:

我看到了一些类似的问题,但没有一个真正给出这个问题的具体解决方案。

我收到的消息是这样的:

HttpError 401 when requesting https://www.googleapis.com/bigquery/v2/projects/project/queries?alt=json returned "Invalid Credentials"

连接到 BigQuery 的代码:

   appname = get_application_id()                                                                                                                                                  
       project_id = appname                                                                                                                                                            
       # Grab the application's default credentials from the environment.                                                                                                              
       credentials = GoogleCredentials.get_application_default()                                                                                                                       
       # Construct the service object for interacting with the BigQuery API.                                                                                                           
       bigquery_service = build('bigquery', 'v2', credentials=credentials)                                                                                                             
       query_request = bigquery_service.jobs()     



       query_data =                                                                                                                                                                   
              'query': query,                                                                                                                                                             
              'useLegacySql': use_legacy_sql                                                                                                                                              
                                                                                                                                                                                         

       query_response = query_request.query(                                                                                                                                           
              projectId=project_id,                                                                                                                                                       
              body=query_data).execute()  

此问题的原因可能是什么?

【问题讨论】:

【参考方案1】:

确保:

    您已创建一个分配了正确 IAM 角色的服务帐号。 已导出环境变量GOOGLE_APPLICATION_CREDENTIALS 以指向在步骤1 中创建的文件。

然后它将起作用。更多详情请见here。

【讨论】:

以上是关于Google App Engine - 请求 BigQuery API 时出现 401的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine 上的 python 请求不适用于 HTTPS

Google App Engine 上的传出 HTTP 请求位置

Google App Engine - 请求 BigQuery API 时出现 401

Google App Engine 错误:获取的线程既不是原始请求线程也不是 ThreadManager 创建的线程

在 Google App Engine Cloud 基础架构上实现 Stack Exchange API 兼容请求限制

可视化负载均衡器在Google App Engine上的多个实例上分发请求