2016-04-26 55 views
3

我用Python和PyDrive製作了一個程序。 該程序捕獲圖像並將其上傳到Google雲端硬盤上的文件夾。 這是我的身份驗證和上傳的基本代碼:有什麼辦法可以讓PyDrive記住用戶的認證嗎?

gauth = GoogleAuth() 
drive = GoogleDrive(gauth) 
file_image = drive.CreateFile({"parents": [{"kind": "drive#fileLink","id": upload_folder_id}]}) 
file_image.SetContentFile(imageName) #Set the content to the taken image 
file_image.Upload() # Upload it 

任何時候我跑就是了我驗證程序。有什麼方法可以記住認證嗎?

+0

我不這麼認爲,在web界面中記得認證是通過cookies解決的。 – linusg

+0

是否可以使用用戶名,密碼組合從配置文件登錄? (這樣我只需要創建一次配置文件) – Gabe

+0

是的,這將是一個解決方案。使用Py 2.x或3.x? – linusg

回答

0

在Google雲端硬盤的網絡界面中,Cookie用於記錄認證。我建議從配置文件中讀取登錄信息,並在每次使用腳本時登錄。你可以使用eval(),但請記住,eval()是邪惡的:)(如果腳本只有你使用,沒關係)。

樣品:

創建(或類似)在同一個文件夾中的腳本是在一個名爲login.conf文件中把這個在它:

{"user": "username", "pass": "password"} 

更換"username""pasword"與你的真實價值,但請保留"。在腳本中,像這樣做:

with open("login.conf", "r") as f: 
    content = eval(f.read()) 

username = content["user"] 
password = content["pass"] 

# Now do login using these two variables 

一個更安全的選擇將是ConfigParserconfigparser在Python 3.X)的使用。

編輯:

看起來登錄谷歌驅動器需要å文件中調用的腳本的目錄client_secrets.json。如果你有它,這樣登錄:

gauth = GoogleAuth() 
gauth.LocalWebserverAuth() 

gauth.LoadCredentialsFile("credentials.txt") 
if gauth.credentials is None: 
    gauth.LocalWebserverAuth() 
elif gauth.access_token_expired: 
    gauth.Refresh() 
else: 
    gauth.Authorize() 

gauth.SaveCredentialsFile("credentials.txt") 

drive = GoogleDrive(gauth) 

希望這會有所幫助(如果有什麼不夠清楚)!

+0

謝謝!另一部分我不清楚的是,如何使用這些信息登錄到我的Google雲端硬盤。 PyDrive怎麼可能? – Gabe

+0

好的。我從來沒有使用PyDrive,但文檔說,你需要一個名爲'client_secrets.json'的文件。你有嗎? – linusg

+0

是的,這是我存儲我的Google Drive api密鑰的文件 – Gabe

相關問題