我正在尝试通过部署在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”)
有没有人知道我做错了什么?
答案 0 :(得分:1)
我认为您在范围内使用Android应用程序的客户端ID。
它不能以这种方式工作:您必须在Android客户端ID所在的同一项目中创建Web应用程序客户端ID,并在您的范围内使用Web项目的客户端ID。
然后,在您的GAE应用程序中,您可以通过将Web应用程序客户端ID设置为您的受众,并使用您的Android客户端ID来检查授权方来检查令牌的有效性。