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

1

Estou tentando escrever um script em python para se conectar ao bate-papo do Facebook. Eu simplesmente não consigo. 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 depurador aqui .

O que mostra que eu sou autenticado (Linha 136), mas ainda assim a mensagem não é enviada de alguma forma. Eu estou realmente preso a isso por dias agora.

    
por firesofmay 08.02.2012 / 15:50

2 respostas

0

Como @grawity apontou, você precisa obter os JIDs que você pode obter adicionando o seguinte código ao seu script.

Em seu código depois de autenticar com o servidor, você pode solicitar ao servidor a lista de contatos. Em seu código, adicione isso,

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 de lista você deve ter contatos, também conhecidos como JIDs. Agora, use esse JID na próxima declaração,

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

Espero que isso resolva seu problema.

    
por 10.02.2012 / 03:27
0

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

    
por 08.02.2012 / 15:58