授权过程出错

时间:2016-04-24 13:52:30

标签: google-bigquery

我们在插入时从Google bigquery收到以下错误:

**未找到OAuth2凭据,开始授权流程**

== Platform ==
  CPython:2.7.5:Windows-2008ServerR2-6.1.7601-SP1
== bq version ==
  v2.0.17
== Command line ==
  ['C:\\LogsReceiverService\\bq-script.py', 'load', '--nosync', '--credential_file=C:\\LogsReceiverService\\.bigquery.v2.token', '--source_format=NEWLINE_DELIMITED_JSON', '--project_id=playscape-proj', '--max_bad_records=99999', 'PROD_DATASET.CLIENT_LOGS_20160424', 'D:\\GameConsoleLogs\\Logs_BigQuery\\GameConsoleClientLog.log.1.gz']
== UTC timestamp ==
  2016-04-24 13:32:53
== Error trace ==
  File "build\bdist.win32\egg\bq.py", line 783, in RunSafely
    return_value = self.RunWithArgs(*args, **kwds)
  File "build\bdist.win32\egg\bq.py", line 999, in RunWithArgs
    client = Client.Get()
  File "build\bdist.win32\egg\bq.py", line 604, in Get
    cls.client = Client.Create()
  File "build\bdist.win32\egg\bq.py", line 584, in Create
    credentials = _GetCredentialsFromFlags()
  File "build\bdist.win32\egg\bq.py", line 390, in _GetCredentialsFromFlags
    credentials = credentials_getter(storage)
  File "build\bdist.win32\egg\bq.py", line 330, in _GetCredentialsFromOAuthFlow
    credentials = oauth2client.tools.run(flow, storage)
  File "build\bdist.win32\egg\oauth2client\util.py", line 132, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "build\bdist.win32\egg\oauth2client\old_run.py", line 149, in run
    code = raw_input('Enter verification code: ').strip()
========================================

该消息还包含带有令牌密钥的链接,但我们不确定应该如何处理它。

你能帮帮忙吗?感谢

1 个答案:

答案 0 :(得分:0)

运行bq(或任何gcloud操作)时,客户端需要为运行该操作的用户提供OAuth凭据。通常这些客户在首次使用时会要求提供凭据,但听起来似乎并非在您的情况下发生。 (或者凭证文件可能已损坏?)

要删除凭据文件的bq客户端副本,请运行bq init --delete_credentials

要尝试重新进行身份验证,请使用bq init。请注意,如果您使用gcloud客户端与其他Google服务进行通信,则bq.py会更喜欢这些凭据,因此您可能需要在删除本地BigQuery凭据后运行gcloud auth login --enable-gdrive-access。 (--enable-grdive-access是可选的,但它允许在Google表格上使用新的BigQuery联合查询功能。您可能需要也可能不需要此功能。)

凭据的另一个选项:如果您要在没有人为干预的情况下将这些操作作为脚本运行,则可以使用服务帐户凭据,以便这些操作作为另一个身份而不是您的个人凭据完成。这里有两个选项,具体取决于您要运行脚本的位置:

  • 您可以在项目中创建服务帐户并下载凭据,然后使用--service_account--service_account_private_key_file--service_account_private_key_password标志将操作作为服务帐户运行,而不是使用你的个人身份。
  • 如果您在GCE实例中运行bq,则可以指定单个标志--user_gce_service_account,bq客户端将从GCE容器加载凭据。