我已经为 Google Drive 编写了 Python 代码,它将图像文件上传到我的驱动器应用程序。我有三个疑问。这是我的代码:
#!/usr/bin/python
import httplib2
import pprint
from apiclient.discovery import build
from apiclient.http import MediaFileUpload
from oauth2client.client import OAuth2WebServerFlow
from apiclient import errors
import sys
CLIENT_ID = 'CLIENT_ID'
CLIENT_SECRET = 'CLIENT_SECRET'
OAUTH_SCOPE = ['https://www.googleapis.com/auth/drive.readonly', 'https://www.googleapis.com/auth/drive.file']
REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob'
FILENAME = "filepath/filename.png"
flow = OAuth2WebServerFlow(CLIENT_ID, CLIENT_SECRET, OAUTH_SCOPE, REDIRECT_URI)
flow.params['access_type'] = 'offline'
flow.params['approval_prompt'] = 'force'
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 = flow.step2_exchange(code)
http = httplib2.Http()
http = credentials.authorize(http)
drive_service = build('drive', 'v2', http=http)
media_body = MediaFileUpload(FILENAME, mimetype='image/png', resumable=True)
body = {
'title': 'Screen Shot 2013-11-03 at 3.54.08 AM',
'description': 'A test screenshot',
'mimeType': 'image/png'
}
file = drive_service.files().insert(body=body, media_body=media_body).execute()
new_permission = {
'type': 'anyone',
'role': 'reader'
}
try:
drive_service.permissions().insert(
fileId=file['id'], body=new_permission).execute()
except errors.HttpError, error:
print 'An error occurred: %s' % error
pprint.pprint(file)
我的查询:
该程序会将所有图像上传到我给定的 client_id 和 client_secret。
如何让用户使用我的应用并将他们的图片上传到他们自己的 Google Drive?我想自动化这个任务。每当我在终端中运行此应用程序时,它总是要求我提供我不想要的授权码。这可以绕过吗?
我阅读了有关 refresh_tokens 的信息,但找不到如何在我的应用程序中实现此功能以自动授权。
那么,refresh_tokens 是否用于此目的?如果是,那么我如何在我的程序中实现它?
如果没有,那么我如何确保在加载我的应用程序后,该特定文件会直接上传到谷歌驱动器上,无需任何授权,或使用任何自动授权方式,从而完全取消用户交互。