2

我按照博客文章验证来自 Android 应用程序的后端调用 ( http://android-developers.blogspot.tw/2013/01/verifying-back-end-calls-from-android.html ) 来验证 Android 发送的令牌Java中的客户端。

我将博客文章中的示例代码与 Google Client Library for Java ( http://code.google.com/p/google-api-java-client/downloads/detail?name=google-api-java-client- 1.17.0-rc.zip&can=2&q= )。

但是,GoogleIdToken.Payload check(String tokenString)示例代码中的方法有时会返回 null。这很烦人,因为我想使用 payload.getAudience() 和 payload.getAuthorizedParty() 来防止欺骗。如果 Payload 为 null,则发生 NullPointerException。

我们怎样才能解决这个问题?

4

2 回答 2

1

我假设你有一个 try/catch 并检查过你没有从 verify() 调用中得到异常?

假设,返回 null 意味着它无法验证。发生这种情况的原因包括:

  • 您离线;该代码无法获取 Google 证书以检查签名
  • 令牌已过期;它们的寿命通常只有一个小时
  • 不知何故,令牌已被更改,因此签名不再有效

如果你有一个你确定的令牌应该是有效的,但是 verify() 调用仍然返回 null,然后提交一个 bug。

于 2013-09-20T15:12:24.780 回答
0

在我的情况下,null 是由库内的问题引起的。描述:发行者是“accounts.google.com”,但作为回应,我有“ https://accounts.google.com ”。解决方案:我手动更改了发行人,这很有帮助。

PS这个问题已经解决了,但它仍然没有包含在发布版本中,至少在我回答的那一刻。

于 2017-04-04T14:32:36.217 回答