Невозможно подключиться к чату Facebook через Python, используя библиотеку xmpppy

Невозможно подключиться к чату Facebook через Python, используя библиотеку xmpppy

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

import xmpp
FACEBOOK_ID = "[email protected]"
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("[email protected]","Hello world from script",))

Вот какую ошибку я получаю:

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

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

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

решение1

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

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

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

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

for i in rosterobject.getItems():
    print i

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

C.send(xmpp.Message("[email protected]","Hello world from script",))

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

решение2

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

Связанный контент