У меня есть внешний 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. Однако, это не похоже на работу.
У меня следующая ошибка
![enter image description here](https://i.stack.imgur.com/ihc9Y.png)
Благодаря Facebook так много информации, что я не знаю, что с ней не так и что с этим делать.