我正在編寫一個python腳本,用於將所有需要的配置文件從我的Linux VM備份到Google Drive Cloud。我希望自動執行此操作,而不必在每次腳本啓動時從瀏覽器輸入驗證碼。你能告訴我如何做到這一點?如何在沒有網頁瀏覽器的情況下使用谷歌驅動器API
#!/usr/bin/python
import httplib2
import pprint
import credentials as cred
from apiclient.discovery import build
from apiclient.http import MediaFileUpload
from oauth2client.client import OAuth2WebServerFlow, FlowExchangeError
# Path to the file to upload
FILENAME = 'hello.py'
# Run through the OAuth flow and retrieve credentials from credentials.py
def api_upload(FILENAME):
flow = OAuth2WebServerFlow(cred.credentials['CLIENT_ID'], cred.credentials['CLIENT_SECRET'],
cred.credentials['OAUTH_SCOPE'],
redirect_uri=cred.credentials['REDIRECT_URI'])
authorize_url = flow.step1_get_authorize_url()
print 'Go to the following link in your browser: ' + authorize_url
code = raw_input('Enter verification code: ').strip()
credentials = ''
try:
credentials = flow.step2_exchange(code)
except FlowExchangeError:
print "Your verification code is incorrect or something else is broken."
exit(1)
# Create an httplib2.Http object and authorize it with our credentials
http = httplib2.Http()
http = credentials.authorize(http)
drive_service = build('drive', 'v2', http=http)
# Insert a file
try:
media_body = MediaFileUpload(FILENAME, mimetype='text/plain', resumable=True)
body = {
'title': "" + FILENAME,
'description': 'A test document',
'mimeType': 'text/plain'
}
upload_file = drive_service.files().insert(body=body, media_body=media_body).execute()
pprint.pprint(upload_file)
except IOError:
print "No such file"
exit(1)
# Function usage:
api_upload(FILENAME)
這裏是我的示例功能。
另一個文件存儲的請求的憑據:
credentials = {"CLIENT_ID": 'blablabla',
"CLIENT_SECRET": 'blablabla',
"OAUTH_SCOPE": 'https://www.googleapis.com/auth/drive',
"REDIRECT_URI": 'urn:ietf:wg:oauth:2.0:oob'}
你能告訴我們你面臨的問題是什麼? – barunsthakur
問題是,每次authorize_url = flow.step1_get_authorize_url() 打印'轉到您的瀏覽器中的以下鏈接:'+ authorize_url 您應該打開瀏覽器,按繼續並將驗證碼粘貼到控制檯。我怎樣才能做到這一點,而無需打開瀏覽器? – Jade
編輯正確格式化問題。 – Leb