端点用户身份验证

时间:2013-02-19 00:34:32

标签: android authentication google-cloud-endpoints

我正试图在我的一个端点中访问用户,但无法从Android获得魔力。文档似乎处于一种有点破碎的状态,看到它是如何从可信测试程序转换的,我看到了相互矛盾的信息,所以我希望有人可以帮助我。

我已在API控制台中为Android创建了我的客户端ID。我将其指定为我的端点中的客户端ID和受众,如下所示:

@Api(
name = "tictactoe",
clientIds = {"myAndroidClientId.apps.googleusercontent.com"},
audiences = {"myAndroidClientId.apps.googleusercontent.com"}
)

在我的Android活动中,我正在创建我的凭证:

credential =  GoogleAccountCredential.usingAudience(this, "server:client_id:myAndroidClientId.apps.googleusercontent.com");
credential.setSelectedAccountName(myAccountName);

并且在使用AsyncTask进行网络调用之前使用它来构建我的服务:

Builder builder = new MyService.Builder(transport, jsonFactory, credential);
MyService service = builder.build();
thing = service.things().get().execute();

然后抛出此异常:

com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException
Caused by: 
com.google.android.gms.auth.GoogleAuthException: Unknown
com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:192) 
com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:217)

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

想出我出错的地方:

您必须在@API以及Android中指定WEB客户端ID作为受众。 android客户端ID仅用于@API clientIds。