3

App Engine とサービス アカウントを使用した Google ドライブへのアクセスは正常に機能します。これを機能させるには、ドライブ ファイルをサービス アカウント名 appid@appspot.gserviceaccount.com と共有する必要もありました。

しかし、GAE SDK を使用すると 401 が返されます。その理由は、共有用の SDK の service_account 名にあると思います。SDK のサービス アカウント名は次のとおりです: test@localhost によると:

app_identity.get_service_account_name()  # returns test@localhost

SDK コンソールのエラー メッセージ:

エラーが発生しました: https://www.googleapis.com/drive/v2/files/0B9-mE....................nM/children?alt=json&key =AI.................................N0 が「無効な認証情報」を返しました">

これは、Google ドライブにアクセスするためのコードです:

def get(self):

    SCOPE = 'https://www.googleapis.com/auth/drive'
    credentials = AppAssertionCredentials(scope=SCOPE)
    logging.info(app_identity.get_service_account_name())
    http = credentials.authorize(httplib2.Http())
    if os.environ['SERVER_SOFTWARE'].startswith('Development') : 
        service = build('drive', 'v2', http=http, developerKey='...API key...')
    else :
        service = build('drive', 'v2', http=http, developerKey='...APY key...')
    # drive requests        

アップデート :

私の個人的な意見 : SDK の service_account 名でドライブ共有を作成できないため、これは GAE でのみ機能し、SDK では機能しません。または、別のサービス アカウント名を指定することは可能ですか。

4

1 に答える 1

2

アプリケーション所有のサービス アカウントのドキュメントを確認してください。また、視聴できるビデオもあります。

ドキュメントには、Python サンプル コードが含まれています。

于 2013-02-03T05:58:13.613 に答える