GAE:remote_api和Application Default Credentials

时间:2015-09-14 14:27:41

标签: python google-app-engine google-cloud-datastore

从今天开始,我一直在使用remote_api(python)来访问GAE上的数据存储区。

我通常会remote_api_shell.py -s <mydomain>

今天我尝试了它失败了,错误是:

  

oauth2client.client.ApplicationDefaultCredentialsError:The   应用程序默认凭据不可用。他们是可用的   如果在Google Compute Engine中运行。否则,环境   变量GOOGLE_APPLICATION_CREDENTIALS必须定义为指向a   定义凭据的文件。看到   https://developers.google.com/accounts/docs/application-default-credentials   了解更多信息。

我无法理解为什么它会问我。

wole输出是这个

stefano@~/gc$ remote_api_shell.py -s ....
Traceback (most recent call last):
  File "/usr/local/bin/remote_api_shell.py", line 133, in <module>
    run_file(__file__, globals())
  File "/usr/local/bin/remote_api_shell.py", line 129, in run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/remote_api_shell.py", line 157, in <module>
    main(sys.argv)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/remote_api_shell.py", line 153, in main
    appengine_rpc.HttpRpcServer)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/remote_api_shell.py", line 74, in remote_api_shell
    secure=secure)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 734, in ConfigureRemoteApiForOAuth
    credentials = client.GoogleCredentials.get_application_default()
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/oauth2client/oauth2client/client.py", line 1204, in get_application_default
    return GoogleCredentials._get_implicit_credentials()
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/oauth2client/oauth2client/client.py", line 1194, in _get_implicit_credentials
    raise ApplicationDefaultCredentialsError(ADC_HELP_MSG)
oauth2client.client.ApplicationDefaultCredentialsError: The Application Default Credentials are not available. They are available if running in Google Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.

2 个答案:

答案 0 :(得分:5)

解决方案是在shell中运行gcloud auth login并再次提供授权

答案 1 :(得分:4)

  1. 转到API管理器下的开发人员控制台&gt;&gt;凭据(目前位于https://console.developers.google.com/apis/credentials?project=<<<Your App Id>>>)。
  2. 点击服务帐户,然后点击标有以下内容的按钮:&#34;生成新的JSON密钥&#34;。
  3. 将下载文件,将其保存在安全的地方。
  4. 将环境变量GOOGLE_APPLICATION_CREDENTIALS设置为指向运行remote_api_shell.py之前保存的文件
相关问题