1

Я пытаюсь написать скрипт на python для подключения к чату в Facebook. Я просто не в состоянии. Вот код:

import xmpp
FACEBOOK_ID = "firesofmay@chat.facebook.com"
PASS = "password"

jid=xmpp.protocol.JID(FACEBOOK_ID)

C=xmpp.Client(jid.getDomain(),debug=['always'])

if not C.connect(("chat.facebook.com",5222)):
    raise IOError('Can not connect to server.')

if not C.auth(jid.getNode(),PASS):
    raise IOError('Can not auth with server.')

C.send(xmpp.protocol.Message("gmjain@chat.facebook.com","Hello world from script",))

Это ошибка, которую я получаю:

An error occurred while looking up _xmpp-client._tcp.chat.facebook.com

И это вывод отладчика здесь.

Который показывает, что я получаю аутентификацию (Строка 136), но все равно сообщение не отправляется как-то. Я действительно застрял в этом в течение нескольких дней.

2 ответа2

0

Как указал @grawity, вам нужно получить JID, которые вы можете получить, добавив следующий код в ваш скрипт.

В вашем коде после аутентификации на сервере вы можете запросить у сервера список контактов. В вашем коде добавить это,

C.sendInitPresence(requestRoster=1)
rosterobject = C.getRoster()

Если вы хотите просто проверить / распечатать JID, вы можете сделать это с помощью следующего цикла.

for i in rosterobject.getItems():
    print i

В объекте списка у вас должны быть контакты, также известные как JID. Теперь используйте этот JID в следующем выражении:

C.send(xmpp.Message("jidfromrosterobj@domain.tld","Hello world from script",))

Я надеюсь, что это решит вашу проблему.

0

username@chat.facebook.com JID действительны только при аутентификации. Для отправки сообщений вы должны использовать -profileid@chat.facebook.com chat.facebook.com, которые вы можете узнать из своего списка XMPP. (Однако отправка сообщения себе не работает.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .