Аутентификация в Facebook с помощью всплывающего окна в PHP - как использовать accessToken и app-secret - PullRequest
0 голосов
/ 14 сентября 2018

Laravel Socialite использует OAuth 2.0. Это ужасно для фейсбука. Мне не нравится идея отправлять пользователей на страницу Facebook и возвращать их, когда мы можем использовать всплывающее окно.

Итак, мой план использовал стандартное всплывающее окно Facebook от javascript api.

кулак - с использованием Базовая настройка получить библиотеку JavaScript

секунда - заставить диалог входа в систему работать.

Это работает, и я получаю userID и accessToken.

Сейчас проблемы запускается

accessToken - устарел, и я не могу сохранить его в базе данных для последующего использования в качестве пароля.

Таким образом, существует альтернатива сохранению accessToken - я могу использовать другой API Facebook, известный как graph api, чтобы получить пользователя по токену, если мой сервер сделал запрос API непосредственно в Facebook, например,

https://graph.facebook.com/me?access_token=...

Я бы получил user_id вот так

{ "имя": "Боб Марли", "id": "111111" }

и я могу быть уверен в этом, потому что я только что проверил токен непосредственно с сервера facebook. Звучит как идеальный мир.

Однако есть две вещи, которые заставляют меня нервничать:

1) Действительно ли я объединил 2 разных API или это стандартный подход?

2) Как мне удалось аутентифицировать пользователя без использования facebook app secret? Где подвох?

1 Ответ

0 голосов
/ 14 сентября 2018

Вам нужно использовать что-то вроде hellojs.

Hellojs позволяет вам открыть всплывающее окно для входа в систему с помощью Facebook / Google / .. и т. Д. От этого вы можете получить access_token. Чтобы получить этот токен доступа, вам нужен только идентификатор приложения, чтобы вы не передавали секрет приложения на стороне клиента

Затем вы отправляете access_token на ваш контроллер и получаете информацию о пользователе с другим запросом с сервера (здесь laraval socialite использует секрет приложения)

$user = Socialite::driver('facebook')->userFromToken($access_token);

Надеюсь, это имеет смысл.

...