簡體   English   中英

pydrive:嘗試將文件從遠程服務器上傳到 Google Drive

[英]pydrive: trying to upload files to Google Drive from a remote server

我正在嘗試使用從(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 服務器上激活我的腳本時,我連接到終端環境中的谷歌頁面,詢問我的 email 地址和密碼。 當我輸入這些時,谷歌會要求進行第二次身份驗證:要么查看帶有代碼的圖像(終端上什么都沒有顯示),要么“聽並輸入你聽到的數字”。 當我輸入該命令時,終端回復“未找到”,我聽不到任何聲音(見下圖)。

在此處輸入圖像描述

我被卡住了,我不知道如何解決這個問題。 不幸的是,我至少需要進行一次身份驗證,然后腳本將自動進行身份驗證。 我真的不知道如何跳過這一步。

任何想法/評論/見解將不勝感激

非常感謝伯蒂

如文檔中所述:

您還可以使用CommandLineAuth()在命令行中手動從用戶那里獲取代碼。

LocalWebserverAuth()將在 localhost:8080 上生成本地網絡服務器偵聽(默認情況下),並嘗試在用戶的 web 瀏覽器上打開身份驗證 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()

如果您想自動區分本地和遠程機器以選擇身份驗證方法,我建議您查看以下問題:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM