如何从Android应用程序发出Google App Engine身份验证请求?

时间:2013-12-03 17:49:29

标签: android google-app-engine oauth google-oauth google-play-services

我正在尝试通过部署在Google App Engine上的后端Android应用程序发出经过身份验证的请求。

我试图关注this guide,但显然我错过了一些东西......

以下是我已经完成的事情:

在Google Cloud Console中,我添加了一个Android应用程序,其中包含应用程序包名称(在AndroidManifest.xml的manifest.package属性中定义)和使用此命令检索的应用程序证书SHA1哈希(我在调试模式下,使用debug keystore):

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -v -list

现在在Android应用程序中我尝试获取一个令牌

Account account = mAccountManager.getAccountsByType("com.google")[0]
String scope = "audience:server:client_id:THE_CLIENT_ID_FROM_GOOGLE_CLOUD_CONSOLE_GAVE_ME";
String token = GoogleAuthUtil.getToken(myActivity, account.name, scope);

不幸的是,此代码会系统地引发GoogleAuthException(“Unknown”)

有没有人知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为您在范围内使用Android应用程序的客户端ID。

它不能以这种方式工作:您必须在Android客户端ID所在的同一项目中创建Web应用程序客户端ID,并在您的范围内使用Web项目的客户端ID。

然后,在您的GAE应用程序中,您可以通过将Web应用程序客户端ID设置为您的受众,并使用您的Android客户端ID来检查授权方来检查令牌的有效性。