2011-01-19 14 views
3

私はFacebookのチャットでメッセージを送信するためにpythonのxmpppyを使用する非常に単純なスクリプトを作成しようとしています。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",)) 

このコードはgchat経由でメッセージを送信するために働き、私はFacebookのにしようとすると、しかし、私はこのエラーを受け取る:

エラー_xmpp-client._tcp.chat.facebook.com

を検索中に発生しました

私は私が代わりにこれを取得FACEBOOK_IDから@ chat.facebook.comを削除:

 
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 iは、以下の2つのメッセージを取得XMPPをインポートする任意の時間に気づきます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

すべて正しい方法で行っているようです。クライアントコンストラクタの 'debug'パラメータに' always'を追加してみてください。 'C = xmpp.Client(jid.getDomain()、debug = ['always'])'。たぶん、これらのログはもう少し詳しく語ります。 :) – eigenein

答えて

2

私も同じプロジェクトを開始し、同じ問題に巻き込まれました。私は解決策も見つけました。あなたはFacebookのUserNameを書く必要があります(したがって、あなたは1つの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を使用してください。)