I'm using react.js as fron-end & laravel for creating API's for web app
in react.js i'm using firebase to get googleAuth
then sending it Laravel App
in Laravel i'm using "kreait/laravel-firebase": "^5.7",
SocialRegister
is working fine for me in Laravel side
When i'm trying to log user in using the code below
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());
}
`
Then i'm getting this error
The value 'eyJhbGciOiJSUzI...' is not a verified ID token: - - The token was issued in the future
I even tried changing timezone
of my laravel app but it didn't worked
This problem occurs when there is a clock skew between the signing server (Firebase) and the verifying server (your server or local computer).
In that case, you can provide a leeway in seconds to allow a token to be expired:
$leewayInSeconds = 360; // 5 minutes
$verifiedIdToken = $firebaseAuth
->verifyIdToken($request->access_token, $leewayInSeconds);