Python:googledrive认证

2024-09-29 21:48:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我的任务是连接到googledriveapi(在PyDrive module的帮助下)并下载一些文件。我设法让这个东西在我的本地电脑上运行——我在Google Console注册了我的“应用程序”,下载了client_secret.json,运行了脚本,验证窗口弹出了,我用我的Google帐户登录,驱动器可以访问,一切正常。在

现在我想在服务器上使用我的脚本,但我基本上不知道该怎么做。我向我的供应商提交了一张支持票,他们的回答是:


你需要得到这些:

{
 "#authJson": "{"access_token":"XXX","token_type":"Bearer","expires_in":3600,"refresh_token":"YYY","created":1457455916}",
  "#appKey": "key",
  "#appSecret": "secret"
}

其中#authJson是“您想要访问的驱动器的任何人”授权和 而#appKey一个#appSecret来自oauth。在


我不知道怎么弄到这些。我知道如何下载client_secret.json。所以问题是:如何得到这些?我走对了吗?或者需要不同的方法。在

理想的最终状态是: 对我的Google驱动器进行某种永久性的access_token,我可以将其传递给应用程序(例如,作为一个字符串参数)。然后应用程序连接到我的驱动器并下载所需的文件。在


Tags: 文件脚本clienttokenjson应用程序secretaccess
2条回答

您需要经过身份验证才能访问某人的专用驱动器帐户。他们将不得不通过一个网络浏览器第一次这样做,一旦他们授予你的访问权,你应该只保存上面的刷新令牌。刷新令牌将使您能够随时从服务器端脚本访问它们的数据。参见:Python Quickstart

如果您只访问您个人控制的驱动器帐户,请使用OAuth 2.0检查服务器到服务器应用程序的服务帐户

编辑:有关预授权的服务器应用程序,请参见编辑。在

您要查找的是PyDrive中的^{}。在

您的代码应该如下所示:

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive 


ga = GoogleAuth()
ga.CommandLineAuth()  # This line in your code currently calls LocalWebserverAuth()
drive = GoogleDrive(self.ga)
# etc.

当您在服务器上运行脚本时,它会要求您将链接复制粘贴到本地浏览器中。一旦你用一个特定的帐户登录,你会得到一个看似随机的字母和数字串。把这个字符串粘贴到你的控制台,你应该可以开始了。在

由于您可能不希望每次脚本运行时都这样做,所以考虑向您的项目添加一个settings.yaml文件,该文件允许您保存登录凭据。有关如何设置的详细信息可以在docs中找到。在


编辑:如果要将PyDrive脚本分发到任何服务器,而无需进一步验证,则必须:

  1. 下载client_secret_xxxxx.json
  2. settings.yaml文件添加到您的项目中,请参见template。确保设置了save_credentials_file:,例如creds.json
  3. client-secret等信息从client_secret_xxxx.json复制到settings.yaml文件中。在
  4. 在我们的开发机器上完成身份验证过程-现在您的文件夹中应该有一个包含凭据的额外文件(例如creds.json
  5. 将包含a)原始脚本、b)settings.yaml文件和c)生成的creds.json文件的整个目录复制到远程计算机。确保相对路径不会改变。在
  6. 利润?在

注意:googledriveapi有附加的API调用限制,在100秒内阻止超过100次调用。在

相关问题 更多 >

    热门问题