エンドポイントが Android ではなく Google API Explorer で完全に正常に動作する理由がわかりません。
実際、GAEエンドポイントサーバー側に対して呼び出しが行われ、ユーザーがOAuthを介して完全に認証されていることがわかるので、ほとんど機能します。
データが電話に送り返される方法に問題があるようです。
電話で取得したログは次のとおりです。
07-28 15:12:53.305: W/System.err(3034): com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
07-28 15:12:53.305: W/System.err(3034): {
07-28 15:12:53.305: W/System.err(3034): "code": 400,
07-28 15:12:53.305: W/System.err(3034): "errors": [
07-28 15:12:53.305: W/System.err(3034): {
07-28 15:12:53.305: W/System.err(3034): "domain": "global",
07-28 15:12:53.305: W/System.err(3034): "message": "java.lang.IllegalArgumentException: name cannot be null or empty",
07-28 15:12:53.305: W/System.err(3034): "reason": "badRequest"
07-28 15:12:53.305: W/System.err(3034): }
07-28 15:12:53.305: W/System.err(3034): ],
07-28 15:12:53.305: W/System.err(3034): "message": "java.lang.IllegalArgumentException: name cannot be null or empty"
07-28 15:12:53.305: W/System.err(3034): }
07-28 15:12:53.305: W/System.err(3034): at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:111)
返されたオブジェクトは、Google API Explorer で確認できるように、非常に単純な POJO です。
EDIT1:
TicTacToe の例から主に取られた Android 側のコード:
settings = getSharedPreferences("PronoCities", 0);
credential = GoogleAccountCredential.usingAudience(
this, "server:client_id:<myid>.apps.googleusercontent.com");
setAccountName(settings.getString(PREF_ACCOUNT_NAME, null));
Pronocities.Builder builder = new Pronocities.Builder(
AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential);
service = builder.build();
どんな助けでも大歓迎です。
フランソワ
google-api-client-1.15.0-rc ライブラリを使用し、Samsung Galaxy S3 / Android 4.1.2 で実行しています。