我使用react.js作为前端和laravel来为网络应用程序创建API
在react.js中,我使用firebase来获取
googleAuth
,然后将其发送到Laravel应用程序
在 Laravel 中我使用 "kreait/laravel-firebase": "^5.7",
SocialRegister
在 Laravel 方面对我来说工作得很好
当我尝试使用下面的代码登录用户时
try {
/** @var FirebaseAuth $firebaseAuth */
$firebaseAuth = app(FirebaseAuth::class);
// Verify the ID token
$verifiedIdToken = $firebaseAuth->verifyIdToken($request->access_token);
// Extract claims from the verified ID token
$uid = $verifiedIdToken->claims()->get('sub');
$userEmail = $verifiedIdToken->claims()->get('email');
// Check if the user already exists in your database
$existingUser = AppUser::where('email', $userEmail)->first();
if ($existingUser) {
// User already exists, return an error or handle it as per your requirements
return $this->sendresponse('false', 'user already exists', null);
}
$user = AppUser::create([
"email" => $request->email,
"name" => $request->name,
"access_token" => $uid, // Save Firebase UID for future reference
]);
// Return success response
return $this->sendresponse('true', 'user registered successfully', ['user' => $user]);
} catch (\Throwable $e) {
// Handle registration errors
return $this->sendresponse('false', 'registration error', $e->getMessage());
}
`
然后我收到此错误
值“eyJhbGciOiJSUzI...”不是经过验证的 ID 令牌: - - 该令牌是在未来发行的
我什至尝试更改我的 laravel 应用程序的
timezone
,但没有成功
当签名服务器 (Firebase) 和验证服务器(您的服务器或本地计算机)之间存在时钟偏差时,就会出现此问题。
在这种情况下,您可以在几秒钟内提供余地以允许令牌过期:
$leewayInSeconds = 360; // 5 minutes
$verifiedIdToken = $firebaseAuth
->verifyIdToken($request->access_token, $leewayInSeconds);