我试图从谷歌验证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);
}
}
}
答案 0 :(得分:0)
所以经过大量的谷歌搜索,我发现了为什么我得到这个错误,因为我的VM上的系统时钟落后了。因为它是第17个,VM上的日期是3月3日。
要仔细检查,您可以使用date
所以解决这个问题的方法是打开VM和ssh并使用这些命令sudo service ntp stop
然后sudo ntpd -gq
然后运行sudo service ntp start
。
在此之后,您可以运行date
并且它应该传递实际日期。