2

Google Drive API へのサービス アカウント アクセスを取得しようとしています。アプリケーションを作成するときは、 Google Drive SDK の例に従いました。私のコードは、ほぼ正確に例に似ています:

class MainPage(webapp2.RequestHandler):
    def get(self):
      build = createDriveService(user)
      searchFile = build.files().get(fileId='FILEID').execute()
      self.response.write(searchFile)

def createDriveService(userEmail):
    API_KEY = 'APIKEY' 
    credentials = AppAssertionCredentials(
        scope='https://www.googleapis.com/auth/drive',
        sub=userEmail)
    http = httplib2.Http()
    http = credentials.authorize(http)

    return build('drive', 'v2', http=http, developerKey=API_KEY)

GAE ページにアクセスすると、ログに次のようなエラーが表示されます。

<"File not found: FILEID">

UI からファイル ID をコピーしたので、ファイル ID が存在することはわかっています。変数 API_KEY に単純なキー アクセスを使用しています。アプリケーションを別の方法で検証する必要がありますか?

EDIT1

他のさまざまな StackOverflow に従ってみました。そのうちの 1 つは、SignedJwtAssertionCredentials を使用し、.p12 キーを .pem キーに変換することです。この変更の後、私は

 cannot import SignedJwtAsserionCredentials 

エラー。そこから、pycrypto ライブラリを .xml ファイルに含めるようにしましたapp.yaml。何か案が?

EDIT2

App Engine でユーザーの偽装に成功しました。この以前に回答された質問に従いましたが、うまくいきました。

4

1 に答える 1

0

Google App Engine プロジェクトのユーザー アカウントを使用しているため、コードのユーザー部分がわかりません。このアカウントの使用方法と検索方法については、このドキュメントを参照してください。このアカウントは、次を使用して見つけることもできます。

from google.appengine.api import app_identity
logging.info('service account : ' + app_identity.get_service_account_name())

このプロジェクト ユーザー アカウントにドライブ ファイルまたはフォルダーへのアクセス権を付与していることを確認してください。

私のコードは次のようになります:

def createDriveService():

    SCOPE = 'https://www.googleapis.com/auth/drive'
    API_KEY = 'AIzaSyB9UkK4OH5Z_E4v3Qp6bay6QEgGpzou3bc'     # GAE
    credentials = AppAssertionCredentials(scope=SCOPE)
    logging.info('using service account : ' + app_identity.get_service_account_name())
    http = credentials.authorize(httplib2.Http())
    return build('drive', 'v2', http=http, developerKey=API_KEY) 
于 2013-08-12T18:21:26.000 に答える