0

を使用して、Python で Cloud Endpoints API から認証済みユーザーを取得しようとしていますendpoints.get_current_user()。ただし、get_current_user は、認証されたユーザーではなく常に None を返します。私のクライアントは Android アプリです。

私が試してみました:

1) クライアントで GoogleAccountCredential を設定します。

googleAccountCredential = GoogleAccountCredential.usingAudience(
                getApplicationContext(), 
                webClientId);
        api = new Api.Builder(
                AndroidHttp.newCompatibleTransport(), 
                new GsonFactory(),
                googleAccountCredential)
                        .setRootUrl(apiRootUrl)
                        .setGoogleClientRequestInitializer(requestInitializer)
                        .build();

2) GoogleAccount クレデンシャルで使用される Web クライアント ID を設定します。

server:client_id:myid.apps.googleusercontent.com

3) Google アカウント セレクターを開始し、選択したアカウントを GoogleAccountCredential に設定します。

startActivityForResult(googleAccountCredential.newChooseAccountIntent(), REQUEST_GOOGLE_ACCOUNT_PICKER);

...

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
          case REQUEST_GOOGLE_ACCOUNT_PICKER:
            if (data != null && data.getExtras() != null) {
              String accountName = data.getExtras().getString(AccountManager.KEY_ACCOUNT_NAME);
              if (accountName != null) {
                googleAccountCredential.setSelectedAccountName(accountName);
              }
            }
            return;
       }
       super.onActivityResult(requestCode, resultCode, data);
    }

4) Python API で allowed_client_ids と Audiences を設定する:

@endpoints.api(name='api', 
               version='v1', 
               description='My API',
               allowed_client_ids=[config.WEB_CLIENT_ID, 
                                   config.ANDROID_CLIENT_ID, 
                                   endpoints.API_EXPLORER_CLIENT_ID],
               audiences=[config.WEB_CLIENT_ID])
class MyApi(remote.Service):
...

Android アプリを開発 App Engine サーバーにエラーなしで接続できます。私は何が欠けていますか?

4

1 に答える 1

0

これは、pycrypto ライブラリがインストールされていないために発生していました。インストールして app.xml で参照する必要があります。Android からのクラウド エンドポイント認証を参照してください: Oauth フレームワーク ユーザーが oauth トークン ユーザーと一致しませんでした

于 2013-10-09T05:13:56.873 に答える