Google+ サインインを使用し、Google Cloud Endpoints を使用して Google App Engine で実行されているサービスを呼び出す Android アプリがあります。呼び出しは認証されます。ユーザーはいずれかを行う前に Google アカウントを選択します。次に、AsyncTask 内でサービス API 用に生成されたクライアント ライブラリを使用して、サーバーへの呼び出しを行います。
GoogleAccountCredential インスタンスをエンドポイント サービスのビルダーに渡します。アプリ内の他のアクティビティでは、エンドポイントの呼び出しを正常に行うことができます。この問題活動と他の活動との間に違いは見られません。例外は繰り返し可能です。スタック トレースは次のとおりです。
com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:284)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:858)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:410)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)
at com.eliotstock.bike.task.ProvisionDeviceTask.doInBackground(ProvisionDeviceTask.java:55)
at com.eliotstock.bike.task.ProvisionDeviceTask.doInBackground(ProvisionDeviceTask.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
Caused by: com.google.android.gms.auth.UserRecoverableAuthException: AppDownloadRequired
at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:255)
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:279)
... 12 more
サービスを構築するためのアクティビティ コードは次のとおりです。
Biketracker.Builder builder = new Biketracker.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), googleAccountCredential);
this.endpointsService = builder.build();
Endpoints メソッドを実行する場合:
Biketracker.User.ProvisionDevice provisionDevice = endpointsService.user().provisionDevice(deviceId);
provisionDevice.execute();
「AppDownloadRequired」が何を意味するのかさえわかりません。どのアプリ?これをデバッグするとき、発生する可能性のある例外のインテントを探しましたが、null です。他の場所で検索しても、ほとんど表示されませんでした。不思議。