我让谷歌云端点与一个用python应用引擎编写的android应用和后端一起工作。当我在开发过程中卸载并重新安装我的应用程序时,我开始从后端遇到 401 错误。在我第一次工作后,后端没有任何变化。所以,
我清理了 C:\Users\username\.android 中的 debug.keystore 文件以及同一目录中的其他文件。再次重新生成了 debug.keystore 文件并获得了新的 sha1 足迹
删除了谷歌应用程序控制台中的 API 项目,并使用新的 sha1 足迹重新生成了 web client_id 和 android client_id
在服务器端代码中使用了新的 web client_id 和 android client_id
还更新了 android 代码中受众范围内的 android cliend_id
我现在安装应用程序后,仍然看到相同的 401 错误。我的应用引擎日志显示了这一点,
I 2013-04-07 16:45:27.297 Checking for id_token.
W 2013-04-07 16:45:27.299 id_token verification failed: Invalid token signature: eyJhbGciOiJSUzI1NiIsImtpZCI6IjMzMTJkNDc0ZWUzNWRjNWU4YzFhMDE4OTkzOGZkN2E3YmUzYmRlZjYifQ.eyJpc3Mi
I 2013-04-07 16:45:27.299 Checking for oauth token.
我能够根据云端点 oauth2 错误和http://android-developers.blogspot.com/2013/01/verifying-back-end-calls-from-android.html收集更多信息,
我解码了发送到app_engine服务器的id_token,发现它有这些字段,
cid = Android app client_id that I registered in app console for
azp = Android app client_id
aud = web client_id for App engine
iss = accounts.google.com
verified_email = true
email_verified = true
email = account i selected in account picker in android app
exp = a datetime having a value in the future
first_segment = {u'alg': u'RS256', u'kid': u'3312d474ee35dc5e8c1a0189938fd7a7be3bdef6'}
以上值似乎正确,但 id_verification 失败。不知道为什么。
又遇到了这个问题。发生,当我卸载后重新安装我的应用程序时。Cloudend Points 服务抛出无效令牌错误。使用令牌并使用 url 对其进行验证。得到如下所示的输出,这意味着令牌是有效的。
"issuer": "accounts.google.com",
"issued_to": "172895167251-1prp5r093hf2nro5bei2cmc1tqf4aasdu.apps.googleusercontent.com",
"audience": "172895167251.apps.googleusercontent.com",
"user_id": "myuserid",
"expires_in": 3086,
"issued_at": 1365644284,
"email": "emailIselectedinadroidapp",
"verified_email": true