Как войти на сайт, который использует Facebook Connect через PHP curl - PullRequest
0 голосов
/ 28 декабря 2010

Мне нужно войти в свою учетную запись с помощью php curl на веб-сайте, который использует Facebook Connect для входа в систему.

В качестве примера я приведу один из моих любимых приложений: Mousehunt

Как вы можете видеть, он использует Facebook (конечно) для входа в систему: если вы уже подключены к Facebook, он преуспевает в автоматическом входе, в противном случае он открывает страницу входа в Facebook.

Как я могу войтив это с php curl?Я знаю кое-что о curl & cookie (cookiejar, cookiefile, post и т. Д.), Но не слишком много.

Какая целевая ссылка для публикации данных?Как я могу вернуться на этот сайт, когда пользователь вошел в систему?

Ответы [ 2 ]

2 голосов
/ 28 декабря 2010

Позвольте мне объяснить, как работает этот тип входа в FB.Конечно, есть альтернативный метод, используемый для настольных приложений, который сделал бы это возможным, но этот веб-сайт не использует его.

Итак, сделка:

Кнопка входа открывает ссылкуна серверах facebook, содержащих ключ API веб-сайта и некоторую произвольную информацию.Все идет нормально.Вы можете легко смоделировать это.

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

Но тогда возникает бремя:

Место, куда вы перенаправляетесь, содержит токен facebook после хэштега (#).

Веб-сайтзатем можете прочитать этот токен с помощью Javascript и использовать его для запроса API-интерфейса Facebook, чтобы подтвердить вашу личность.

Причина, по которой это делается таким образом, проста:

Подумайте об этом.Каждый может подделать запрос от имени сайта и прочитать ваши личные данные.Но все, что находится после хэштега, никогда не будет читаться сервером, на который направлен запрос.Веб-браузер просто не передает его, и это будет нарушать стандарты http и вызывать ошибку.

Единственный способ получить к нему доступ - это JavaScript.И это может быть только на веб-сайте, обслуживающем запрос (куда перенаправляет Facebook).И домен, на который перенаправляет Facebook, заблокирован владельцем ключа приложения.

Вы видите, что javascript является важной частью безопасности здесь.

Я думаю, что это действительно небезопасно, потому что есть многовозможны объяснения, но это очень просто, что является причиной того, что эта форма входа в систему настолько распространена по сравнению, например, с openid.

Итак, подведем итог: вам нужно смоделировать полностью поддерживающий JavaScript браузер.Это отчасти возможно, но очень сложно, и для этого не существует готовых решений.

1 голос
/ 31 декабря 2010

ну, может быть, есть способ. Похоже, что запрос на Facebook никоим образом не подписывает область разрешения. так что это в основном означает, что вы можете предоставить приложению / веб-сайту больше разрешений, чем они даже просили.

тогда вы можете предоставить разрешение на постоянное использование сайта - войти обычным способом - и сохранить куки.

тогда вы можете отправить эти куки вместе с curl. если на веб-сайте используется аутентификация на стороне сервера, что весьма вероятно, вы все равно войдете в систему, поскольку токен доступа является постоянным.

однако нет никакой гарантии, что этот хак останется работоспособным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...