我不明白为什么我的端点在 Google APIs Explorer 而不是 Android 上工作得很好。
事实上,它几乎可以正常工作,因为我可以看到调用是对我的 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 APIs Explorer 中看到的,发回的对象是一个非常简单的 POJO。
编辑1:
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 库并在三星 Galaxy S3 / Android 4.1.2 上运行。