3

我让谷歌云端点与一个用python应用引擎编写的android应用和后端一起工作。当我在开发过程中卸载并重新安装我的应用程序时,我开始从后端遇到 401 错误。在我第一次工作后,后端没有任何变化。所以,

  1. 我清理了 C:\Users\username\.android 中的 debug.keystore 文件以及同一目录中的其他文件。再次重新生成了 debug.keystore 文件并获得了新的 sha1 足迹

  2. 删除了谷歌应用程序控制台中的 API 项目,并使用新的 sha1 足迹重新生成了 web client_id 和 android client_id

  3. 在服务器端代码中使用了新的 web client_id 和 android client_id

  4. 还更新了 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
4

1 回答 1

0

有趣的。如果将 id_token 发送到 tokeninfo 端点会发生什么?:

https://www.googleapis.com/oauth2/v1/tokeninfo?id_token= $id_token

于 2013-04-09T03:55:18.980 回答