我正在关注https://developers.google.com/storage/docs/gspythonlibrary#credentials
中的示例我通过在开发中选择来创建客户端/秘密对。控制台“创建新的客户端ID”,“已安装的应用程序”,“其他”。
我的python脚本中有以下代码:
import boto
from gcs_oauth2_boto_plugin.oauth2_helper import SetFallbackClientIdAndSecret
CLIENT_ID = 'my_client_id'
CLIENT_SECRET = 'xxxfoo'
SetFallbackClientIdAndSecret(CLIENT_ID, CLIENT_SECRET)
uri = boto.storage_uri('foobartest2014', 'gs')
header_values = {"x-goog-project-id": proj_id}
uri.create_bucket(headers=header_values)
并且失败并出现以下错误:
File "/usr/local/lib/python2.7/dist-packages/boto/storage_uri.py", line 555, in create_bucket
conn = self.connect()
File "/usr/local/lib/python2.7/dist-packages/boto/storage_uri.py", line 140, in connect
**connection_args)
File "/usr/local/lib/python2.7/dist-packages/boto/gs/connection.py", line 47, in __init__
suppress_consec_slashes=suppress_consec_slashes)
File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 190, in __init__
validate_certs=validate_certs, profile_name=profile_name)
File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 572, in __init__
host, config, self.provider, self._required_auth_capability())
File "/usr/local/lib/python2.7/dist-packages/boto/auth.py", line 883, in get_auth_handler
'Check your credentials' % (len(names), str(names)))
boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 3 handlers were checked. ['OAuth2Auth', 'OAuth2ServiceAccountAuth', 'HmacAuthV1Handler'] Check your credentials
答案 0 :(得分:4)
在过去的几天里,我一直在努力解决这个问题,结果发现了boto的东西,gspythonlibrary都已经过时了。
此处显示了如何使用/验证Google云端存储的最新示例代码: https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/storage/api
答案 1 :(得分:2)
您需要在.boto
文件中提供客户端/密码对,然后运行gsutil config
。
它将创建一个刷新令牌,然后应该工作!
有关详细信息,请参阅https://developers.google.com/storage/docs/gspythonlibrary#credentials
答案 2 :(得分:0)
U还可以为gsutil命令进行控制台应用程序验证和gsutil cp,rm,gsutil config -a通过控制台应用程序传递到云SDK然后执行