Mam istniejącą aplikację Python do Google App Engine z wieloma funkcjami. Chcę teraz zintegrować Dysk Google z aplikacją. W szczególności chcę, aby moja aplikacja mogła:Uzyskiwanie dostępu do Dysku Google przy użyciu aplikacji Google App Engine Python
- Utworzyć pusty plik na Dysku Google użytkownika, na którym mój użytkownik może utworzyć Dokument Google.
- Pobierz plik z Dysku Google, aby dalej przetwarzać w mojej aplikacji.
- Wysyłaj go z powrotem na Dysk Google, aby użytkownik mógł dalej edytować go jako Dokument Google.
Będę wdzięczny za wszystko, jeśli ktoś, kto wie, jak zrobić to, co chcę zrobić, może skierować mnie na SZCZEGÓŁOWE strony internetowe Google, które spełniają moje WYMAGANE DANE (nie jest to ogólna odpowiedź, np. " Zobacz przykład DrEdit "). Z góry dziękuję!
Aktualizacja:
podstawie wygenerowanego kodu próbki w drive-v2-python-appengine
za sugestię w odpowiedzi 1, tu jest mój program z RequestHandler tworzenia pusty plik:
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")
Testowanie jest nieco mylące, ponieważ od czasu do czasu, kiedy to uruchomiłem, w tym po raz pierwszy, pojawiło się strona z żądaniem dostępu, ale w większości przypadków tak się nie dzieje. Użyłem https://accounts.google.com/b/0/IssuedAuthSubTokens?hl=en do odebrania dostępu do Dysku i Dysku, który nie pojawia się już na liście, ale domyślam się, że opóźnienie w dostępie do godziny wynosi godzinę lub dłużej. Nie jestem tego pewien i nie widziałem tego udokumentowanego.
W każdym razie, jeśli skomentuję wywołanie drive_service.files().insert()
, nie przerwie i przekierowuje do mojej strony streszczenia. Sądzę, że oznacza to, że autoryzacja działa poprawnie, ponieważ sprawia to, że jest to generowany przykładowy kod.
Jednak gdybym un-skomentować insert
i używać resumable=True
dla organizmu mediów, otrzymuję:
ResumableUploadError: Failed to retrieve starting URI.
A jeśli używam resumable=False
, otrzymuję:
HttpError: <HttpError 401 when requesting https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart&alt=json returned "Login Required">
Więc wydaje mi się, aby uzyskać zezwolenie OAuth 2.0, ale nie można wstawić pliku.
Witamy w StackOverflow! Zastanów się nad przepisaniem pytania i usunięciem paragrafów, które nie mają znaczenia, aby na nie odpowiedzieć (np. 4 i 5). Staraj się być konkretny, ponieważ musiałem przeczytać go dwa razy, aby zrozumieć, czego chcesz, a zakres tego pytania wydaje się bardzo szeroki. –
Przepraszamy za niedogodności i dzięki za powitanie i wskazówki. Mam nadzieję, że moja zredagowana wersja jest lepsza. Zakres nie jest szeroki: chcę tylko, aby moja aplikacja mogła przesyłać dokumenty do Dysku Google, aby użytkownicy mogli edytować dokumenty za pomocą interfejsu Google Docs, ale mogę też pracować z dokumentami w mojej aplikacji . – Lindsay
Podoba mi się to pytanie - gdzie znajdziesz "drive-v2-python-appengine"? Nie mogę znaleźć tego w Internecie. Nie lubię DrEdita, ponieważ polega on na wielu zaciemnionych skryptach javascript. Poszukuje prostszego przykładu. – slashdottir