'Vue.js 3 use Laravel callback for google login

I made a google login through socialite in laravel

public function redirectToProvider($provider)
{
    $url = Socialite::driver($provider)->stateless()->redirect()->getTargetUrl();

    return $url;

    //return response()->json(['url' => $url], 200);
}

public function handleProviderCallback($provider)
{
    $user = null;

    if (Helper::validateProvider($provider) === false) {
        return response()->json(['message' => 'The provider is not accepted temporally'], 422);
    }

    try {
        $userProvider = Socialite::driver($provider)->stateless()->user();
    } catch(\Exception $e) {
        \Log::error($e->getMessage());
        return response()->json(["message" => "An error occured while trying to login with {$provider}"], 422);
    }

    if (empty($userProvider)) {
        return response()->json(["message" => "Invalid user provider"], 422);
    }

    if (empty($userProvider->id)) {
        return response()->json(["message" => "Invalid provider id"], 422);
    }

    if (empty($userProvider->name)) {
        return response()->json(["message" => "Invalid provider name"], 422);
    }

    if (empty($userProvider->email)) {
        return response()->json(["message" => "Invalid provider email"], 422);
    }

    DB::transaction(function () use ($userProvider, $provider, &$user) {
        $user = User::firstOrCreate([
            'provider_id'       => $userProvider->id,
            'provider_name'     => $provider,
        ], [
            'email'            => $userProvider->email,
            'email_verified_at' => now(),
        ]);
    });

    if (! $user) {
        return response()->json(["message" => "Cannot create an account"]);
    }

    $token = $user->createToken('token')->plainTextToken;


    $response = [
        'user'      => $user,
        'token'     => $token,
        'isAdmin'   => $isAdmin
    ];

    return response($response);

}

But now I do not know how I could proceed with these two api and take the data properly in my application de vue

I use vue3 and there I don't have much advantage of books already written Is there a way I can get data from google? For example, if I open the 2 apies in the browser, I can log in and my token will be returned But in view, if I made a call to callback it would be a matter of course because I would send something to google How can I proceed /



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source