архитектура для Facebook-чата с веб-страницы, (XMPP? Strophe? Punjab?) - PullRequest
7 голосов
/ 05 мая 2011

Я хотел бы реализовать FB-чат внутри веб-страницы . Я посмотрел в Facebook API и обнаружил, что чат разрешен только с использованием XMPP. Сначала я попытался подключиться к FB-чату с помощью Pidgin, и он работал нормально. Я пришел к выводу, что сервер FB-chat выступает в качестве сервера XMPP. Это правда?

Я читал о XMPP, похоже, что между клиентом и сервером должно быть установлено открытое TCP-соединение для обмена строфами XML, что невозможно с веб-сайта (через JavaScript и без плагинов), так как только http-запросы / ответы могут быть обмены, нет TCP-соединения там. Это означает, что между ними должен быть какой-то прокси-сервер, а что касается аутентификации, FB API предлагает использовать X-FACEBOOK-PLATFORM SASL (не DIGEST MD5, поскольку есть прокси-сервер). Я не нашел четкого учебника или шагов, как это сделать, помощь здесь приветствуется.

Немного больше исследований о клиенте XMPP из Интернета или браузера. Я увидел, что должен использовать библиотеку под названием Strophe (на основе протокола BOSH ) и другие ответы. какой-то менеджер соединений под названием Пенджаб . Я читал об этом протоколе BOSH, похоже, это решение, но в некоторых местах я обнаружил, что он не разрешен в FB (хотя я не уверен, насколько правильной является эта информация). Я пытался настроить их, но я был совершенно сбит с толку, как начать и что я действительно должен делать.

Для strophe, я не нашел реального руководства, как реализовать его, и в том, что я нашел, они предлагают сначала настроить jabber-сервер, такой как ejabberd (мне это не понадобилось).

Мой вопрос:

Может кто-нибудь предложить архитектуру, которую я должен реализовать для достижения своей цели?

Так будет: webpage -> (HTTP) -> Strophe -> (TCP) -> FB-chat ИЛИ будет ли между ними сервер XMPP и почему?

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

Если кто-то уже сделал это, пожалуйста, помогите. Большое спасибо.

Сабах

Ответы [ 3 ]

3 голосов
/ 05 мая 2011

Информация о сервере чата facebook:

Protocol: XMPP or Jabber
Username: mathvdh
Domain: chat.facebook.com
Jabber ID: mathvdh@chat.facebook.com
Password: <your Facebook password>
Port: 5222
Server: chat.facebook.com
Use SSL/TLS: no
Allow plaintext authentication: no

Я думаю, что strophe и punjab должны быть рабочей комбинацией для чата fb, смотрите здесь: Библиотека XMPP для чата facebook

И я думаю, что схема будет больше похожа на:

веб-страница клиента / js / strophe <-> ваш сервер / пенджаб <-> чат-сервер Facebook xmpp

1 голос
/ 19 мая 2011

Я тоже пытаюсь решить эту проблему.Пока что я выбрал:

Jappix mini (использует библиотеку JSJAC.js) <-> node-xmpp-bosh на node.js на моем сервере <-> на сервере Facebook.

Jappix mini было сложно найти, но, похоже, это лучшая панель чата с открытым исходным кодом, так что стоит упомянуть здесь.

У меня еще не все настроено, но я буду обновляться здесь, если я добьюсь прогресса.Основная проблема заключается в том, как заставить JSJAC использовать аутентификацию по ключу API Facebook.Я не могу найти никакой информации или примеров для этого, но я нашел этот плагин для библиотеки strophe, который может быть адаптирован:

https://github.com/rubenjgarciab/turedsocial/blob/master/strophe-plugins/src/facebook.js

Наконец, вы не можете включить свой секретный ключ Facebookв javascript (потому что это секрет!), поэтому вам нужно использовать API REST Facebook auth.promoteSession на стороне сервера, чтобы создать секретный ключ сеанса, который можно использовать в javascript для подписи запроса аутентификации X-FACEBOOK-PLATFORM.

Надеюсь, это поможет, я добавлю больше, если / когда у меня получится.

0 голосов
/ 24 января 2012

Сабах

Как уже упоминалось в предыдущих ответах, Пенджаб <-> strophe.js работает. Я разветвлял клиента strophe на Facebook: https://github.com/javierfigueroa/turedsocial и добавил пример.

Надеюсь, это поможет.

...