【问题标题】:pydrive: trying to upload files to Google Drive from a remote serverpydrive:尝试将文件从远程服务器上传到 Google Drive
【发布时间】:2019-10-28 11:00:23
【问题描述】:

我正在尝试使用从 (Ubuntu) 服务器远程工作的 python 脚本自动将文件上传到谷歌驱动器。

在我的代码中,我有以下来自 Pydrive 的简单行:

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

gauth = GoogleAuth()
gauth.LocalWebserverAuth()
drive = GoogleDrive(gauth)

file = drive.CreateFile({"parents": [{"kind": "<directory_name>","id": "<directory_id>"}]})
file.SetContentFile('<file_name>')
file.Upload()

我的 python 目录中有一个 setting.yaml 文件,以便脚本可以在第一次手动身份验证后自动进行身份验证,还有一个 client_secrets.json。我基本上遵循了https://pythonhosted.org/PyDrive/oauth.html 中的所有步骤。

但是,当我在远程 Ubuntu 服务器上激活我的脚本时,我连接到终端环境中的一个谷歌页面,询问我的电子邮件地址和密码。当我输入这些时,谷歌会要求进行第二次身份验证:要么查看带有代码的图像(终端上什么都没有显示),要么“听并输入你听到的数字”。当我输入该命令时,终端回复“未找到”,我听不到任何声音(见下图)。

我被卡住了,我不知道如何解决这个问题。不幸的是,我至少需要进行一次身份验证,然后脚本将自动进行身份验证。我真的不知道如何跳过这一步。

任何想法/评论/见解将不胜感激

非常感谢 贝尔蒂

【问题讨论】:

    标签: python ubuntu google-drive-api google-oauth pydrive


    【解决方案1】:

    如文档中所述:

    您也可以使用CommandLineAuth(),它在命令行中手动从用户那里获取代码。

    LocalWebserverAuth() 将生成本地网络服务器(默认情况下)在 localhost:8080 上侦听,并尝试在用户的网络浏览器上打开身份验证 URL。打开的页面将在认证后将认证代码传送到在 localhost 上运行的本地服务器。

    这里的问题是在远程服务器上运行此代码无法在本地计算机的浏览器中打开链接,因此您无法登录。

    使用CommandLineAuth() 将在远程服务器的终端上打印出一个 URL,您可以在本地浏览器中打开它。然后,您在浏览器中进行身份验证,它会为您提供身份验证代码,您需要从本地浏览器复制并粘贴到终端的提示中。

    from pydrive.auth import GoogleAuth
    from pydrive.drive import GoogleDrive
    
    gauth = GoogleAuth()
    gauth.CommandLineAuth()  # <--
    drive = GoogleDrive(gauth)
    
    file = drive.CreateFile({"parents": [{"kind": "<directory_name>","id": "<directory_id>"}]})
    file.SetContentFile('<file_name>')
    file.Upload()
    

    如果您想自动区分本地和远程机器以选择身份验证方法,我建议您查看以下问题:

    【讨论】:

    • 非常感谢您的回答。我完全按照您所说的修改了代码并且它起作用了。你让我开心:) 感谢您提供的链接。它们将非常有用。
    • 当我尝试命令行身份验证时,我遇到了设置为 localhost://8080 的 redirect_uri 问题。你是如何解决这个问题的?
    猜你喜欢
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    相关资源
    最近更新 更多