Não é possível conectar-se ao bate-papo do Facebook via Python, usando a biblioteca xmpppy

Não é possível conectar-se ao bate-papo do Facebook via Python, usando a biblioteca xmpppy

Estou tentando escrever um script em python para conectar-me ao chat do Facebook. Eu simplesmente não sou capaz. Aqui está o código:

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",))

Este é o erro que recebo:

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

E esta é a saída do depuradoraqui.

O que mostra que fui autenticado (Linha 136), mas ainda assim a mensagem não foi enviada de alguma forma. Estou realmente preso nisso há dias.

Responder1

Como @grawity apontou, você precisa obter os JIDs que podem ser obtidos adicionando o código a seguir ao seu script.

No seu código, após a autenticação no servidor, você pode solicitar ao servidor a lista de contatos. No seu código adicione isto,

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

Se você quiser apenas verificar/imprimir os JIDs, você pode fazer isso com o seguinte loop.

for i in rosterobject.getItems():
    print i

No objeto lista, você deve ter contatos, também conhecidos como JIDs. Agora use esse JID na próxima instrução,

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

Espero que isso resolva o seu problema.

Responder2

username@chat.facebook.comJIDs são válidos apenas durante a autenticação. Para enviar mensagens você deve usar JIDs, que você pode descobrir em sua lista XMPP. (Enviar uma mensagem para si mesmo não funciona.)-profileid@chat.facebook.com

informação relacionada