2011-01-19 4 views
3

나는 python의 xmpppy를 사용하여 facebook 채팅을 통해 메시지를 보내는 매우 간단한 스크립트를 만들려고합니다.xmpppy 및 Facebook 채팅 통합

 
import xmpp 
FACEBOOK_ID = "[email protected]" 
PASS = "password" 
SERVER = "chat.facebook.com" 
jid=xmpp.protocol.JID(FACEBOOK_ID) 
C=xmpp.Client(jid.getDomain(),debug=[]) 
if not C.connect((SERVER,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",)) 

이 코드는 내가 페이스 북으로하려고 할 때 그러나 나는이 오류받을, g 채팅을 통해 메시지를 보내 작동합니다 찾는 동안 오류가 발생했습니다

을 _xmpp-client._tcp.chat.facebook.com

나는 FACEBOOK_ID에서 @ chat.facebook.com를 제거하면

나는이 대신받을 : 나는 또한 내가 XMPP를 가져올 수있는 시간을 알

 
File "gtalktest.py", line 11, in 
    if not C.connect((SERVER,5222)): 
    File "/home/john/xmpppy-0.3.1/xmpp/client.py", line 195, in connect 
    if not CommonClient.connect(self,server,proxy,secure,use_srv) or secureNone and not secure: return self.connected 
    File "/home/john/xmpppy-0.3.1/xmpp/client.py", line 179, in connect 
    if not self.Process(1): return 
    File "/home/john/xmpppy-0.3.1/xmpp/dispatcher.py", line 302, in dispatch 
    handler['func'](session,stanza) 
    File "/home/john/xmpppy-0.3.1/xmpp/dispatcher.py", line 214, in streamErrorHandler 
    raise exc((name,text)) 
xmpp.protocol.HostUnknown: (u'host-unknown', '') 

나는 두 개의 메시지 때 R을 다음 얻을 unning :

 
/home/john/xmpppy-0.3.1/xmpp/auth.py:24: DeprecationWarning: the sha module is deprecated; use the hashlib module instead 
    import sha,base64,random,dispatcher 
/home/john/xmpppy-0.3.1/xmpp/auth.py:26: DeprecationWarning: the md5 module is deprecated; use hashlib instead 
    import md5 

나는 이러한 종류의 문제를 해결하는 비교적 새로운 해요 및 조언, 또는 나에게 앞으로 이동 이러한 문제를 해결하는 데 도움이 될 수 리소스에 대한 링크 주시면 감사하겠습니다. 읽어 주셔서 감사합니다!

+0

제대로 된 것처럼 보입니다. Client 생성자의'debug' 매개 변수에'always'를 추가하십시오 :'C = xmpp.Client (jid.getDomain(), debug = [ 'always'])'. 어쩌면이 기록들이 조금 더 말할 것입니다. :) – eigenein

답변

2

나는 또한 같은 프로젝트를 시작했고 같은 문제에 빠져 들었다. 해결책을 찾았습니다. 당신은 페이스 북의 UserName을 써야만합니다 (따라서 사용자 이름 하나를 선택해야합니다). 이것이 가장 중요한 부분입니다. 아마 나 같은 사람도 작은 모자에 쓰지 않을거야.

1
import xmpp 

FACEBOOK_ID = "[email protected]" 
PASS = "password" 
SERVER = "chat.facebook.com" 

jid=xmpp.protocol.JID(FACEBOOK_ID) 

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

if not client.connect((SERVER,5222)): 
    raise IOError('Can not connect to server.') 
if not client.auth(jid.getNode(),PASS): 
    raise IOError('Can not auth with server.') 


message = xmpp.protocol.Message(frm=client.Bind.bound[0], to="-<#_ID_OF_FRIEND>@chat.facebook.com", typ="chat", body="Hello world",) 

client.SendAndWaitForResponse(message) 

이것은 나를 위해 일했습니다. 어쨌든, 쿼리에 대한 서버 응답을 알고 싶다면 Client.send 대신 Client.SendAndWaitForResponse를 사용하십시오.)