I'm trying to fix this problem for 2 days :(
this error came when I logged with socialite, when I request data from my API in my project it gives me Uncaught (in promise) Error: Request failed with status code 401!
so the user actually logged in, but somehow my API's now working ;'(
routes/web.php
Route::controller(AuthController::class)->group(function($route) {
.
.
.
$route->prefix("social")->group(function($route) {
$route->get("{provider}", "redirectToProvider")->name("redirect-to-provider");
$route->get("{provider}/callback", "handleProviderCallback")->name("handle-provider-callback");
});
});
routes/V1/api.php
Route::middleware("auth:sanctum")->group(function ($route) {
$route->prefix("carts")->controller(CartController::class)->group(function ($route) {
$route->get("/", "index");
.
.
.
});
});
AuthController.php
public function login(LoginRequest $request)
{
$request->authenticate();
$request->session()->regenerate();
return redirect('/profile')->with('success', 'Logged Successfully.');
}
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->stateless()->redirect();
}
public function handleProviderCallback($provider)
{
try {
$user_social = Socialite::driver($provider)->stateless()->user();
$current_user = UserSocial::where("account_id", $user_social->getId())->first();
if ($current_user) {
$userFind = User::findOrFail($current_user->user_id);
Auth::login($userFind);
return redirect()->intended("/");
} else {
$user = new User();
$user->name = $user_social->getName();
$user->email = $user_social->getEmail();
$user->password = bcrypt($user_social->getId());
$user->login_with = $provider;
$user->assignRole(User::ROLE_USER);
$user->save();
$user_account = new UserSocial();
$user_account->user_id = $user->id;
$user_account->account_id = $user_social->getId();
$user_account->provider = $provider;
$user_account->token = $user->createToken($user->id)->plainTextToken;
$user_account->save();
$token = $user->createToken($user->id)->plainTextToken;
Auth::login($user);
return redirect()->intended("/");
}
} catch (ClientException $exception) {
return $this->errorResponse(["message" => "Invalid credentials provided."]);
}
Cart/Index.vue
axios.get(`/api/v1/carts`).then(res => {
...
...
});