12

クラウド エンドポイント メソッドのユーザー ID の取得に問題があります。Android クライアントで oauth2 認証を使用し、資格情報をサービスに渡しました。以下は、私の方法がどのように見えるかに似ています (より明確にするために単純化されています)。

Python の問題 8848は、この問題と非常によく似ているようです。

同じ問題はJava apiでも問題になりますか? 方法

public SuccessCode doSomething(WireFormat wire, User user){
    log.info("User id: "+user.getUserId());
    log.info("Federated identity: "+user.getFederatedIdentity());
    log.info("Email address: "+user.getEmail());
}

Android クライアントの資格情報で oauth2 認証が実行されていても、フェデレーション ID と userId に対して null が表示されます。電子メール アドレスがログに正しく表示されます。これはすべて、デプロイされたアプリケーションにあります。

何が間違っているかについて他に何か提案はありますか?この問題の既知の回避策はありますか? https://developers.google.com/appengine/docs/java/endpoints/consume_android#making-authenticated-callsで提案されている方法に従って、Android クライアントをセットアップしました。

4

2 に答える 2

5

問題 8848 が同じ原因であることは正しいです。根本的な問題は言語に依存せず、両方のランタイムに影響します。現時点ではUser、Endpoints のメソッド引数を介して渡されたオブジェクトにユーザー ID フィールドが入力されるとは思わないでください。

非常に最適ではない回避策は、Userオブジェクトをデータストアに永続化して読み戻すことです。再読み取りオブジェクトには、ユーザー ID が含まれます。

于 2013-04-24T17:59:50.787 に答える