Laravel google / apiclient无法在[timestamp]之前处理令牌

时间:2018-03-19 22:20:19

标签: laravel-5 google-oauth

我试图从谷歌验证idToken,我不断收到此错误。我使用angular作为字体结尾,并使用laravel作为后端,我只想在签名之前验证idToken。

{message: "Cannot handle token prior to 2018-03-19T22:12:10+0000",…}
exception : "Firebase\JWT\BeforeValidException"
file : "/home/vagrant/web/scratk/office-api/vendor/firebase/php-jwt/src/JWT.php"
line : 124
message : "Cannot handle token prior to 2018-03-19T22:12:10+0000"
trace : [{,…},…]

这是我在Laravel中的功能:

public function socialSignIn(Request $request, Response $response) {
    JWT::$leeway = 5;

    $date = date('Y-m-d h:i:s');

    $provider = $request->input('provider');

    if ($provider == 'google') {

        $id_token = $request->header('Authorization');

        $id_token = str_replace("Bearer ","",$id_token);

        $CLIENT_ID = Config::get('google.client_id');

        $client = new \Google_Client();
        $client->setDeveloperKey($CLIENT_ID);
        $payload = $client->verifyIdToken($id_token);
        if ($payload) {
            // $userid = $payload['sub'];
            return true;
        } else {
            return false;
            // return response()->json([
            //     'failed'
            // ], 300);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

所以经过大量的谷歌搜索,我发现了为什么我得到这个错误,因为我的VM上的系统时钟落后了。因为它是第17个,VM上的日期是3月3日。

要仔细检查,您可以使用date

查看日期

所以解决这个问题的方法是打开VM和ssh并使用这些命令sudo service ntp stop然后sudo ntpd -gq然后运行sudo service ntp start

在此之后,您可以运行date并且它应该传递实际日期。