多くの機能を備えた既存のGoogleAppEnginePythonアプリがあります。Googleドライブをアプリに統合したいと思います。具体的には、アプリで次のことができるようにします。
- ユーザーのGoogleドライブに空のファイルを作成し、ユーザーがGoogleドキュメントを作成できるようにします。
- そのファイルをGoogleドライブから取得して、アプリでさらに処理します。
- ユーザーがGoogleドキュメントとしてさらに編集できるように、定期的にGoogleドライブに返送してください。
私がやろうとしていることを行う方法を知っている誰かが、私の特定の要件に対応する特定のGoogle Webページに私を導くことができれば永遠に感謝します(「DrEditの例を参照してください」のような一般的な答えではありません) 。前もって感謝します!
アップデート:
drive-v2-python-appengine
回答1の提案に従って生成されたサンプルコードに基づいて、空のファイルを作成するためのRequestHandlerを使用したプログラムを次に示します。
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")
初めての場合も含めて、これを実行すると、アクセス要求ページが表示されることがありますが、ほとんどの場合、表示されないため、テストはやや混乱します。https://accounts.google.com/b/0/IssuedAuthSubTokens?hl=enを使用してドライブへのアクセスを取り消すと、ドライブがリストに表示されなくなりましたが、1時間以上の遅延が存在すると思いますアクセス取り消しを実行するため。それについてはよくわかりません、そしてそれが文書化されているのを見たことがありません。
いずれにせよ、への呼び出しをコメントアウトしても、drive_service.files().insert()
中止されず、概要ページにリダイレクトされます。これは、生成されたサンプルコードのようになるため、認証が正しく機能していることを意味すると思います。
ただし、コメントを外してメディア本文にinsert
使用すると、次のようになります。resumable=True
ResumableUploadError: Failed to retrieve starting URI.
そして、私が使用するresumable=False
と、次のようになります。
HttpError: <HttpError 401 when requesting https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart&alt=json returned "Login Required">
そのため、OAuth 2.0認証を取得できるようですが、ファイルを挿入できません。