2

我有一个 Android 应用程序,它使用 Google+ 登录并使用 Google Cloud Endpoints 调用在 Google App Engine 上运行的服务。调用经过身份验证 - 用户在进行任何调用之前选择了一个 Google 帐户,然后我们使用为 AsyncTask 中的服务 API 生成的客户端库来调用服务器。

我们将 GoogleAccountCredential 实例传递给 Endpoints 服务的构建器,在应用程序的其他活动中,我可以很好地调用端点。我看不出这个问题活动与其他活动之间没有区别。例外是可重复的。这是堆栈跟踪:

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”是什么意思。哪个应用程序?在调试这个时,我已经在我可能触发的异常上寻找了一个 Intent,但它是空的。在其他地方搜索很少出现。迷惑了。

4

0 回答 0