Tôi có ứng dụng Python App Engine hiện tại với rất nhiều chức năng. Bây giờ tôi muốn tích hợp Google Drive vào ứng dụng. Cụ thể là tôi muốn ứng dụng của mình có thể:Truy cập Google Drive từ ứng dụng Python của Google App Engine
- Tạo tệp trống trong Google Drive của người dùng nơi người dùng của tôi có thể tạo tài liệu Google.
- Truy xuất tệp đó từ Google Drive để xử lý thêm trong ứng dụng của tôi.
- Gửi lại cho Google Drive định kỳ để người dùng có thể thực hiện chỉnh sửa thêm trên đó dưới dạng Google Tài liệu.
Tôi luôn biết ơn nếu ai đó biết cách làm những gì tôi đang cố gắng có thể hướng dẫn tôi đến (các) trang web cụ thể của Google giải quyết yêu cầu SPECIFIC của tôi (không phải là câu trả lời chung). Xem ví dụ DrEdit "). Cảm ơn trước!
Cập nhật:
Dựa trên mã mẫu được tạo ra trong drive-v2-python-appengine
theo gợi ý trong trả lời 1, đây là chương trình của tôi với một RequestHandler để tạo một tập tin rỗng:
import os
import webapp2
import io
from google.appengine.api import memcache
import httplib2
from apiclient.discovery import build
from apiclient.http import MediaIoBaseUpload
from oauth2client.appengine import oauth2decorator_from_clientsecrets
decorator = oauth2decorator_from_clientsecrets(
os.path.join(os.path.dirname(__file__), 'client_secrets.json'),
scope=[
'https://www.googleapis.com/auth/drive',
])
http = httplib2.Http(memcache)
drive_service = build("drive", "v2", http=http)
class CreateEmptyFile(webapp2.RequestHandler):
@decorator.oauth_required
def get(self):
body = {
'title': 'Sample Document',
'description': 'A sample document',
'mimeType': 'text/plain'
}
media_body = MediaIoBaseUpload(io.BytesIO(""), mimetype='text/plain', resumable=True)
file = drive_service.files().insert(body=body, media_body=media_body).execute()
self.redirect("/synopsis")
Thử nghiệm là hơi khó hiểu, bởi vì đôi khi tôi đã chạy điều này, bao gồm cả lần đầu tiên, nó đưa lên trang yêu cầu truy cập, nhưng hầu hết thời gian nó không. Tôi đã sử dụng https://accounts.google.com/b/0/IssuedAuthSubTokens?hl=en để thu hồi quyền truy cập vào Drive và Drive không còn hiển thị trong danh sách nữa, nhưng tôi cho rằng thời gian trì hoãn từ một giờ trở lên tồn tại để thực hiện thu hồi quyền truy cập. Bạn không chắc chắn về điều đó và chưa thấy tài liệu đó.
Trong mọi trường hợp, nếu tôi nhận xét cuộc gọi đến drive_service.files().insert()
, nó sẽ không hủy và chuyển hướng đến trang tóm tắt của tôi. Tôi tin rằng điều này có nghĩa là ủy quyền đang hoạt động chính xác, vì điều đó làm cho nó giống như mã mẫu đã tạo.
Tuy nhiên, nếu tôi bỏ bình luận các insert
và sử dụng resumable=True
cho cơ thể phương tiện truyền thông, tôi nhận được:
ResumableUploadError: Failed to retrieve starting URI.
Và nếu tôi sử dụng resumable=False
, tôi nhận được:
HttpError: <HttpError 401 when requesting https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart&alt=json returned "Login Required">
Vì vậy, tôi dường như để có thể nhận được thông qua ủy quyền OAuth 2.0, nhưng không thể chèn tệp.
Chào mừng bạn đến với StackOverflow! Xin vui lòng, xem xét viết lại câu hỏi của bạn và loại bỏ một số đoạn văn không có liên quan để trả lời nó (như thứ 4 và thứ 5). Hãy cố gắng cụ thể, bởi vì tôi phải đọc nó hai lần để hiểu những gì bạn muốn, và phạm vi của câu hỏi này có vẻ rất rộng. –
Xin lỗi vì sự bất tiện và cảm ơn sự chào đón và hướng dẫn. Hy vọng rằng phiên bản đã chỉnh sửa của tôi tốt hơn. Phạm vi không có ý định rộng: Tôi chỉ muốn ứng dụng của tôi có thể gửi tài liệu qua lại tới Google Drive để người dùng có thể chỉnh sửa tài liệu bằng giao diện người dùng Google Documents, nhưng tôi cũng có thể làm việc với tài liệu trong ứng dụng của tôi . – Lindsay
Tôi thích câu hỏi này - bạn tìm "drive-v2-python-appengine" ở đâu? Tôi không thể tìm thấy nó trực tuyến. Tôi không thích DrEdit bởi vì nó dựa trên rất nhiều javascript obfuscated để chạy. Tìm kiếm một ví dụ đơn giản hơn. – slashdottir