Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java check()的Google ID令牌检查器返回null_Java_Android_Google Oauth_Google Openid - Fatal编程技术网

Java check()的Google ID令牌检查器返回null

Java check()的Google ID令牌检查器返回null,java,android,google-oauth,google-openid,Java,Android,Google Oauth,Google Openid,我跟随了验证来自Android应用程序的后端调用()的博文,以验证Android客户端在Java中发送的令牌 我将博客文章中的示例代码用于Google Client Library for Java() 但是,示例代码中的GoogleIdToken.Payload检查(String-tokenString)方法有时返回null。这很烦人,因为我想使用payload.getAudience()和payload.getAuthorizedParty()来防止欺骗。如果有效负载为null,则会发生Nu

我跟随了验证来自Android应用程序的后端调用()的博文,以验证Android客户端在Java中发送的令牌

我将博客文章中的示例代码用于Google Client Library for Java()

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


我们如何解决这个问题?

我假设您有一个try/catch,并且检查了verify()调用没有出现异常

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

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

如果您有一个确实确定应该有效的令牌,但verify()调用仍然返回null,那么就提交一个bug。

在我的例子中,null是由库内部的错误引起的。 描述:发行人是“accounts.google.com”,但作为回应,我有“”。 解决方案:我手动更改了发行人,这很有帮助

附言。
这个问题已经解决了,但它仍然没有包括在发布版本中,至少在我回答的时候

很抱歉,我不理解尝试/捕获假设。我使用以下代码在示例代码中使用Checker类:Checker Checker=newchecker(newstring[]{clientID},accession);有效载荷=检查器检查(令牌);System.out.println(payload.getAudience())//NPE我应该用try/catch来包围这些代码吗?您可能想试试这个。点击>并查看您的令牌是否有效。如果是,但check()仍然返回null,这肯定是一个错误。在尝试之后,我发现我向Checker传递了一个错误的客户端ID。令牌有效,但check()返回null,因为我传递了错误的clientID。它是按预期工作还是一个bug?如果它按预期工作,我希望它能给出更具体的信息。url是在表单中还是在表单中?在的文档中,它表示前一种形式。这取决于您是要查看访问令牌还是ID令牌。您正在使用的API的文档应该清楚地表明您在任何时候都在处理哪些API。