Google Plus API-无法在特定日期之前处理令牌

jac*_*are 3 php oauth google-api google-plus google-oauth

我使用Google Plus API实现了登录功能。在我们移开部署时区之前,一切工作正常。即使服务器时间已正确调整,以下问题也会不时出现:

无法在2018-02-01T06:30:07 + 0000之前处理令牌

这是在PHP中实现的,并使用了Google Plus的SDK。有人遇到过此问题并已正确解决吗?

ric*_*d4s 6

这也为我工作。我必须进入composer为我生成的vendor文件夹,vendor\google\apiclient\src\Google\AccessToken\Verify.php并寻找一个getJwtService()应该看起来像这样的函数

    private function getJwtService()
  {
    $jwtClass = 'JWT';
    if (class_exists('\Firebase\JWT\JWT')) {
      $jwtClass = 'Firebase\JWT\JWT';
    }

    if (property_exists($jwtClass, 'leeway')) {
      // adds 1 second to JWT leeway
      // @see https://github.com/google/google-api-php-client/issues/827
      $jwtClass::$leeway += 1;
    }

    return new $jwtClass;
  }
Run Code Online (Sandbox Code Playgroud)

然后$jwtClass::$leeway += 1;$jwtClass::$leeway += 200;由于我的时区,更改了的值。我落后了30分钟约2分钟。请注意,这带有安全漏洞。


DaI*_*mTo 1

当服务器的时钟比身份验证服务器的时钟慢几秒时,就会出现此错误。铸造令牌的服务器上的时钟与验证令牌的服务器上的时钟之间可能存在轻微偏差,如果 iat 或 nbf 是未来的,则令牌尚未有效。

一种解决方案是使用较小的余地,如下所示:

JWT::$余地 = 5; // 允许计时检查有 5 秒的容差

参见第1172期