Python:Google驱动器身份验证
我的任务是连接到GoogleDrive API(在的帮助下)并下载一些文件。我设法让这个东西在我的本地计算机上运行——我在注册了我的“应用程序”,我下载了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
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
)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
文件-确保相对路径不更改)复制到远程计算机。还没有尝试过这个,但它应该可以按照您的需要工作:)如果它可以工作,请告诉我们,以便我们可以修改/添加此选项到答案中。