Я пытаюсь настроить аутентификацию с помощью провайдера Facebook.
На данный момент у меня есть приложение Angular 6 и серверный API Laravel 5.6 с Dingo.
Я пытаюсь сделать так, чтобы можно было использовать учетную запись facebook для пения и наложить некоторые ограничения, но я не могу этого сделать.
Я пытался использовать angularx-social-login, который работал с Angular, но я не могу получить пользователя по токену в моем бэкэнде Laravel, потому что он говорит, что метод userFromTokenAndSecret не существует.
$providerUser = Socialite::driver('facebook')->stateless()->userFromTokenAndSecret($request->token, config('facebook.config.secret'));
$account = SocialFacebookAccount::whereProvider('facebook')
->where('provider_id', $providerUser->getId())
->first();
if (!$account->exists) {
$account = new SocialFacebookAccount([
'provider_user_id' => $providerUser->getId(),
'provider' => 'facebook'
]);
$account->save();
}
Как бы это получить? Потребляет ли он тело запроса?
@AndreyLutskevich просто попытался отправить в API то, что я получил из facebook, и это привело к «Ошибка клиента: POST https://graph.facebook.com/v3.0/oauth/access_token привел к ответу 400 Bad Request…»
Я не могу рассказать вам о ng2-ui-auth, потому что не работаю с ним. Фронтенд работает с этой библиотекой и отправляет токен аутентификации из facebook в бэкэнд (code). А на бэкэнде одна строка Socialite::driver('facebook')->stateless()->user(); возвращает полную информацию о пользователе.
Итак, вы говорите, что я должен отправлять authToken, а не объект пользователя?
да. С ng2-ui-auth на бэкэнд вы должны отправлять только токен авторизации.
@AndreyLutskevich, не могли бы вы уточнить, как мне его передать. Насколько я понимаю, мне следует вызвать backend API route с помощью get. Должен ли я передавать токен через заголовки или как полезную нагрузку? Не удалось найти никаких подсказок, как работает Socialite и для чего нужен метод.
Позвольте нам продолжить обсуждение в чате.






Попробуйте использовать
ng2-ui-auth. Получитеcodeиз Facebook и отправьте его на серверную часть. На бэкэнде получить пользователя черезSocialite::driver('facebook')->stateless()->user();