У меня есть внешний SPA, построенный на Angular 6, и внутренний на Laravel 5.6. Я пытаюсь сделать авторизацию с помощью Facebook ngx-social-login
на переднем конце и Socialite
на заднем плане.
Это код в моем компоненте
signInWithFacebook(): void {
this.sas.signIn(FacebookLoginProvider.PROVIDER_ID).then(
userData => this.as.fb(userData.authToken).subscribe(x => {
console.log(x);
})
);
}
И это услуга
fb(data): Observable<any> {
return this.http.get(this.API_URL, data);
}
А вот и мои маршруты Laravel
$api->version('v1', function ($api) {
$api->get('auth/facebook', 'SocialAuthFacebookController@redirectToProvider');
$api->get('auth/facebook/callback', 'SocialAuthFacebookController@callback');
});
Это контроллер
public function redirectToProvider()
{
return Socialite::driver('facebook')->stateless()->redirect();
}
public function callback()
{
$user = Socialite::driver('facebook')->stateless()->user();
$authUser = $this->findOrCreateUser($user, 'facebook');
$token = JWTAuth::fromUser($authUser);
return Response::json(compact('token'));
}
public function findOrCreateUser($user, $provider)
{
$authUser = User::where('provider_id', $user->id)->first();
if ($authUser) {
return $authUser;
}
return User::create([
'name' => $user->name,
'email' => $user->email,
'provider' => $provider,
'provider_id' => $user->id
]);
}
Поскольку я использую Laravel только для API, я полагаю, что не могу получить доступ redirectToProvider
так что я пытался позвонить auth/facebook/callback
и передать его authToken
что я получаю после входа в мой SPA. Тем не менее, это не похоже на работу.
Благодаря Facebook есть так много информации, что я не знаю, что не так и что с этим делать.
Задача ещё не решена.
Других решений пока нет …