Acceder a Google Drive desde una aplicación de Google App Engine Python

Tengo una aplicación existente de Google App Engine Python con mucha funcionalidad. Ahora quiero integrar Google Drive en la aplicación. Específicamente quiero que mi aplicación pueda:

  1. Cree un archivo vacío en Google Drive de mi usuario, donde mi usuario puede crear un Google Doc.
  2. Recuperar ese archivo de Google Drive para su posterior procesamiento en mi aplicación.
  3. Envíelo a Google Drive periódicamente para que el usuario pueda realizar más ediciones en él como un documento de Google Doc.

Estaré eternamente agradecido si alguien que sabe cómo hacer lo que estoy tratando de hacer puede dirigirme a la (s) página (s) específica (s) de Google que responden a mi requisito ESPECÍFICO (no es una respuesta general como “Vea el ejemplo de DrEdit”) . ¡Gracias por adelantado!

Actualizar:

Basado en el código de muestra generado en drive-v2-python-appengine según la sugerencia de la Respuesta 1, aquí está mi progtwig con un RequestHandler para crear un archivo vacío:

 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', resumble=True) file = drive_service.files().insert(body=body, media_body=media_body).execute() self.redirect("/synopsis") 

Las pruebas son algo confusas, porque ocasionalmente cuando ejecuto esto, incluso la primera vez, aparece la página de solicitud de acceso, pero la mayoría de las veces no lo hace. He utilizado https://accounts.google.com/b/0/IssuedAuthSubTokens?hl=en para revocar el acceso a Drive y Drive ya no aparece en la lista, pero creo que existe un retraso de una hora o más Para la realización de la revocación de acceso. No estoy seguro de eso, y no lo he visto documentado.

En cualquier caso, si hago un comentario sobre la llamada a drive_service.files().insert() , no se cancela, y redirige a mi página de sinopsis. Creo que esto significa que la autorización está funcionando correctamente, ya que eso lo hace como el código de muestra generado.

Sin embargo, si anulo el comentario del insert y utilizo resumble=True para el cuerpo de medios, obtengo:

 ResumbleUploadError: Failed to retrieve starting URI. 

Y si uso resumble=False , obtengo:

 HttpError:  

Parece que puedo obtener la autorización de OAuth 2.0, pero no puedo insertar un archivo.

Pruebe nuestra aplicación de inicio rápido en: https://developers.google.com/api-client-library/python/start/installation

Puede crear una aplicación de motor de inicio rápido, que es útil para crear la configuración inicial. Para casos de uso específicos, consulte la referencia de la API de la unidad .