在我的Android应用程序中,我遇到使用Google Cloud Endpoints对Google AppEngine应用程序进行身份验证调用的问题。
这是我的端点方法:
@ApiMethod(name = "compute", clientIds = { Ids.WEB_CLIENT_ID,
Ids.ANDROID_CLIENT_ID, API_EXPLORER_CLIENT_ID },
audiences = { Ids.WEB_CLIENT_ID },
scopes = { "https://www.googleapis.com/auth/userinfo.email" })
public Response compute(Request req, User user) {
if (user == null) {
return new Response("HELLO, " + req.getMessage());
} else {
return new Response("HELLO, " + user.getEmail());
}
}
初始化GoogleAccountCredential:
mCredential = GoogleAccountCredential.usingAudience(this,
"server:client_id:" + WEB_CLIENT_ID);
mCredential.setSelectedAccountName(mAndroidUtils.getAccountName(this));
对我的终端进行异步调用:
@Override
protected Response doInBackground(Void... params) {
try {
Myendpoint.Builder builder = new Myendpoint.Builder(
AndroidHttp.newCompatibleTransport(),
new JacksonFactory(), mCredential);
Myendpoint anEndpoint = CloudEndpointUtils.updateBuilder(
builder).build();
Request r = new Request();
r.setMessage("World!");
return anEndpoint.compute(r).execute();
} catch (IOException e) {
e.printStackTrace();
Respone = new Respone ();
r.setValue("EXCEPTION");
return r;
}
}
我已将我的项目部署到App引擎。 在Api资源管理器中,一切都运行良好,但当我在我的Android设备上运行时,我得到了异常:GoogleAuthException:com.google.android.gms.auth.GoogleAuthException:Unknown。
我已经在Stackoverflow中阅读了几乎所有关于App引擎和Google Cloud Endpoints的内容。最常见的错误是在创建ANDROID_CLIENT_ID期间使用ANDROID_CLIENT_ID而不是WEB_CLIENT_ID或指定错误的SHA1指纹。我已多次检查所有ID,但它不起作用。请帮忙。