Внешняя аутентификация OAuth с Facebook
TL;DR версия:
Можете ли вы пройти проверку подлинности с помощью Facebook без URL-адреса обратного вызова для веб-приложения, поскольку веб-приложение фактически не работает на сервере.
Полное объяснение:
Я работаю над созданием приложения на платформе подключенного телевидения, где само "приложение" представляет собой набор HTML/JS/CSS, работающий локально (например, "Файл" -> "Открыть" в браузере вашего компьютера), и я хотел бы интегрировать в него Facebook.
Проблема заключается в том, что все OAuth-вызовы Facebook для Интернета требуют, чтобы у вас был URL-адрес обратного вызова для перенаправления пользователя для завершения аутентификации. Вот что надо - нет URL для этого приложения - это локально работающая веб-страница на устройстве.
Я знаю, что это то, для чего была разработана внеполосная аутентификация, но я не могу найти какую-либо документацию о том, как использовать это (или как сделать поток OAuth без обратного вызова) с системой OAuth Facebook.
3 ответа
Вы описываете аутентификацию на рабочем столе или любую ситуацию, когда вы аутентифицируетесь в FB без сервера. URL перенаправления, который вы передаете в диалог OAuth: https://www.facebook.com/connect/login_success.html
Когда браузер перенаправляет, вы можете получить токен доступа. Вы можете прочитать все об этом в документации FB, внизу в разделе " Приложения для настольных компьютеров " (https://developers.facebook.com/docs/authentication/).
Просто перечитайте свой вопрос, и, поскольку приложение работает в браузере, вам нужно будет открыть другое окно для аутентификации и получения токена доступа.
Если вы используете HTML/Javascript, используйте их Javascript SDK. Вы можете войти в систему, просто используя FB.login и получив от него токен доступа.
Я действительно не думаю, что это возможно. Если нет чего-то совершенно недокументированного, Facebook не имеет механизма для отправки аутентификационных данных, кроме как путем загрузки URL-адреса. Я уверен, что это подразумевается, по крайней мере частично, как мера безопасности, функционирующая как своего рода "белый список", куда будут отправляться данные аутентификации.
Единственный способ, которым я могу придумать для вас, чтобы обойти это, может быть установить URL на сервере где-нибудь, который мог бы ответить на перенаправление и сохранить данные аутентификации, и иметь ваш клиентский код, опрашивающий этот сервер, чтобы получить его. Вид службы аутентификации прокси, по сути. Возможно, вам придется открыть второе окно браузера с экраном авторизации Facebook, но теоретически это может сработать.