Python:Google驱动器身份验证

Python:Google驱动器身份验证,python,google-api,google-drive-api,google-oauth,pydrive,Python,Google Api,Google Drive Api,Google Oauth,Pydrive,我的任务是连接到GoogleDrive API(在的帮助下)并下载一些文件。我设法让这个东西在我的本地计算机上运行——我在注册了我的“应用程序”,我下载了client\u secret.json,运行脚本,身份验证窗口弹出,我用我的谷歌帐户登录,驱动器可以访问,一切正常 现在我想在服务器上使用我的脚本,我基本上不知道如何做到这一点。我向我的提供商提交了一份支持票,他们的回答是: 你需要得到这些: { "#authJson": "{"access_token":"XXX","token_typ

我的任务是连接到GoogleDrive API(在的帮助下)并下载一些文件。我设法让这个东西在我的本地计算机上运行——我在注册了我的“应用程序”,我下载了
client\u secret.json
,运行脚本,身份验证窗口弹出,我用我的谷歌帐户登录,驱动器可以访问,一切正常

现在我想在服务器上使用我的脚本,我基本上不知道如何做到这一点。我向我的提供商提交了一份支持票,他们的回答是:


你需要得到这些:

{
 "#authJson": "{"access_token":"XXX","token_type":"Bearer","expires_in":3600,"refresh_token":"YYY","created":1457455916}",
  "#appKey": "key",
  "#appSecret": "secret"
}
其中,
#authJson
是“您想访问谁的驱动器”授权和 和
#appKey
a
#appSecret
来自oauth


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

理想的最终状态是:
对我的谷歌硬盘进行某种永久性的
访问\u令牌
,我可以将其传递给应用程序(例如,作为字符串参数)。然后,应用程序连接到我的驱动器并下载所需的文件

您需要通过身份验证才能访问某人的私人驱动器帐户。他们第一次必须通过web浏览器执行此操作,一旦他们授予您访问权限,您只需保存上面的刷新令牌即可。刷新令牌将使您能够在需要时从服务器端脚本访问其数据。见:


如果您只访问您个人控制的驱动器帐户,请使用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.
在服务器上运行脚本时,它会要求您将链接复制粘贴到本地浏览器中。一旦你用一个特定的帐户登录,你会得到一个看似随机的字母和数字串。将该字符串粘贴到您的控制台中,您就可以开始了

因为每次脚本运行时可能不想这样做,请考虑将<>代码>设置.yAML文件添加到项目中,这样可以保存登录凭据。有关如何设置的详细信息,请参见


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

  • 下载
    client\u secret\uuxxxxx.json
  • settings.yaml
    文件添加到项目中,请参见此。确保设置了
    save\u credentials\u file:
    ,例如
    creds.json
  • client\u secret\u xxxx.json
    中的
    client secret
    等信息复制到
    settings.yaml
    文件中
  • 在我们的开发机器上完成身份验证过程-现在您的文件夹中应该有一个包含凭据的额外文件(例如
    creds.json
  • 将包含以下内容的整个目录复制到远程计算机:a)原始脚本;b)设置.yaml文件;c)生成的
    creds.json
    文件。确保相对路径不会更改
  • 利润

  • 注意:Google Drive API附带有API调用限制,在100秒内阻止超过100次调用。

    你好,罗宾,谢谢你的回答。我可以再问一个问题吗?从何处获取这些登录凭据(将保存在
    设置.json
    )?嘿@mLC,您是否从谷歌云控制台下载了client_secret_xxxxxxx.json文件(用于PyDrive时通常重命名为client_secrets.json)?这是一个json格式的文件,包含
    settings.yaml
    文件所需的所有信息。您可以将其用作模板。我刚才还注意到我在回答中称它为
    settings.json
    ,实际上它被称为
    settings.yaml
    。我有
    client_secret.json
    :),但我想这里的问题是我无法从服务器授权,因为我无法访问该命令行。我想过程如下:1)我将在我的本地计算机上授权2)我将获得一些带有身份验证信息的文件3)我将在
    设置
    文件中存储此身份验证信息4)我将把此设置文件上载到服务器5)不再需要在服务器上进行身份验证。太好了!请查看
    设置.yaml
    ,其中有一个
    保存凭据文件:
    字段。您可以尝试1)将
    保存凭据\u文件:creds.json
    ,2)在本地计算机上执行身份验证过程,3)将所有内容(包括
    creds.json
    文件-确保相对路径不更改)复制到远程计算机。还没有尝试过这个,但它应该可以按照您的需要工作:)如果它可以工作,请告诉我们,以便我们可以修改/添加此选项到答案中。