No se puede conectar al chat de Facebook a través de Python, usando la biblioteca xmpppy

No se puede conectar al chat de Facebook a través de Python, usando la biblioteca xmpppy

Estoy intentando escribir un script en Python para conectarme al chat de Facebook. Simplemente no puedo. Aquí está el 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 es el error que me sale:

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

Y esta es la salida del depurador.aquí.

Lo que muestra que me autentico (Línea 136), pero aún así el mensaje no se envía de alguna manera. Estoy realmente estancado en esto desde hace días.

Respuesta1

Como señaló @grawity, necesita obtener los JID, que puede obtener agregando el siguiente código a su secuencia de comandos.

En su código, después de autenticarse con el servidor, puede solicitarle al servidor la lista de contactos. En tu código agrega esto,

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

Si simplemente desea verificar/imprimir los JID, puede hacerlo con el siguiente bucle.

for i in rosterobject.getItems():
    print i

En el objeto de lista debería tener contactos también conocidos como JID. Ahora use ese JID en la siguiente declaración.

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

Espero que esto resuelva tu problema.

Respuesta2

username@chat.facebook.comLos JID solo son válidos durante la autenticación. Para enviar mensajes, debe utilizar JID, que puede encontrar en su lista XMPP. (Sin embargo, enviarse un mensaje a usted mismo no funciona).-profileid@chat.facebook.com

información relacionada