gpt4 book ai didi

python - Google Drive 上传脚本的 OAuth2 服务帐户凭据

转载 作者:行者123 更新时间:2023-12-01 04:23:58 26 4
gpt4 key购买 nike

如果有人之前问过这个问题,我提前致歉,但我对我正在编写的服务器端 Python 脚本有一些基本问题,该脚本每晚将 CSV 文件上传到我们的 Google Drive 帐户中的文件夹。文件夹所有者创建了一个 Google API 项目,为此启用了 Drive API,并创建了一个凭据对象,我已将其下载为 JSON 文件。该文件夹已与服务帐户电子邮件共享,因此我假设脚本一旦获得授权,现在就可以访问该文件夹。

JSON 文件包含以下字段 private_key_idprivate_keyclient_emailclient_idauth_uri token_uriauth_provider_x509_cert_urlclient_x509_cert_url

  1. 我猜我的脚本不需要所有这些 - 哪些是 OAuth2 授权的基本或强制字段?

  2. 此处给出的示例 Python 脚本

https://developers.google.com/drive/web/quickstart/python

似乎假设凭证是直接从 JSON 文件检索的:

...
home_dir = os.path.expanduser('~')
credential_dir = os.path.join(home_dir, '.credentials')
if not os.path.exists(credential_dir):
os.makedirs(credential_dir)
credential_path = os.path.join(credential_dir,
'drive-python-quickstart.json')

store = oauth2client.file.Storage(credential_path)
credentials = store.get()
...

但在我们的设置中,我们将它们存储在我们自己的数据库中,并且脚本通过字典访问它们。如果凭据位于字典中,如何进行授权?

提前致谢。

最佳答案

浏览源代码后,它似乎被设计为仅接受 JSON 文件。他们正在使用 simplejson进行编码和解码。看一下源代码:

This是从您提供的文件中获取内容的位置:

 62 def locked_get(self): 
63 """Retrieve Credential from file.
64
65 Returns:
66 oauth2client.client.Credentials
67
68 Raises:
69 CredentialsFileSymbolicLinkError if the file is a symbolic link.
70 """
71 credentials = None
72 self._validate_file()
73 try:
74 f = open(self._filename, 'rb')
75 content = f.read()
76 f.close()
77 except IOError:
78 return credentials
79
80 try:
81 credentials = Credentials.new_from_json(content) #<----!!!
82 credentials.set_store(self)
83 except ValueError:
84 pass
85
86 return credentials

new_from_json他们尝试使用 simplejson 解码内容。

 205 def new_from_json(cls, s): 
206 """Utility class method to instantiate a Credentials subclass from a JSON
207 representation produced by to_json().
208
209 Args:
210 s: string, JSON from to_json().
211
212 Returns:
213 An instance of the subclass of Credentials that was serialized with
214 to_json().
215 """
216 data = simplejson.loads(s)

长话短说,看来您必须从您的字典构建一个 JSON 文件。请参阅this 。基本上,您需要 json.dumps(your_dictionary) 并创建一个文件。

关于python - Google Drive 上传脚本的 OAuth2 服务帐户凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33367250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com