Внешняя аутентификация 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, но теоретически это может сработать.

Другие вопросы по тегам