Python xmpppy和Facebook聊天集成

Python xmpppy和Facebook聊天集成,python,facebook,chat,xmpppy,Python,Facebook,Chat,Xmpppy,我正在尝试创建一个非常简单的脚本,它使用python的xmpppy通过facebook聊天发送消息 import xmpp FACEBOOK_ID = "username@chat.facebook.com" PASS = "password" SERVER = "chat.facebook.com" jid=xmpp.protocol.JID(FACEBOOK_ID) C=xmpp.Client(jid.getDomain(),debug=[]) if not C.connect((SERVE

我正在尝试创建一个非常简单的脚本,它使用python的xmpppy通过facebook聊天发送消息

import xmpp FACEBOOK_ID = "username@chat.facebook.com" 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("friend@chat.facebook.com","Hello world",)) 导入xmpp FACEBOOK_ID=”username@chat.facebook.com" PASS=“password” SERVER=“chat.facebook.com” jid=xmpp.protocol.jid(FACEBOOK\u ID) C=xmpp.Client(jid.getDomain(),debug=[]) 如果不是C.connect((服务器,5222)): raise IOError('无法连接到服务器') 如果不是C.auth(jid.getNode(),PASS): raise IOError('无法使用服务器进行身份验证') C.send(xmpp.protocol.Message(“friend@chat.facebook.com“,”你好,世界“,)) 此代码用于通过gchat发送消息,但是当我尝试使用facebook时,我收到以下错误:

查找_xmpp-client时出错。_tcp.chat.facebook.com

当我从facebook\u 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', '') 文件“gtalktest.py”,第11行,在 如果不是C.connect((服务器,5222)): 文件“/home/john/xmpppy-0.3.1/xmpp/client.py”,第195行,在connect中 如果不是CommonClient.connect(self、server、proxy、secure、use_srv)或secureNone和not secure:返回self.connected 文件“/home/john/xmpppy-0.3.1/xmpp/client.py”,第179行,在connect中 如果不是self.Process(1):返回 文件“/home/john/xmpppy-0.3.1/xmpp/dispatcher.py”,第302行,调度中 处理程序['func'](会话,节) 文件“/home/john/xmpppy-0.3.1/xmpp/dispatcher.py”,第214行,在streamErrorHandler中 升起exc((名称、文本)) xmpp.protocol.HostUnknown:(u'host-unknown','') 我还注意到,每次导入xmpp时,运行时都会收到以下两条消息:

/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 /home/john/xmpppy-0.3.1/xmpp/auth.py:24:弃用警告:sha模块已弃用;改用hashlib模块 导入sha、base64、random、dispatcher /home/john/xmpppy-0.3.1/xmpp/auth.py:26:弃用警告:md5模块已弃用;改用hashlib 导入md5
我对解决这类问题还比较陌生,如果您能为我提供建议,或链接到能够帮助我解决这些问题的资源,我将不胜感激。谢谢你的阅读

我也开始了同一个项目,并陷入了同样的问题。我也找到了解决办法。你必须写facebook的用户名(因此你必须选择一个用户名),而且也要用大写字母。这是最重要的部分。很可能你也像我一样,不会用大写字母写它。

import-xmpp
import xmpp

FACEBOOK_ID = "username@chat.facebook.com"
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)
FACEBOOK_ID=”username@chat.facebook.com" PASS=“password” SERVER=“chat.facebook.com” jid=xmpp.protocol.jid(FACEBOOK\u ID) client=xmpp.client(jid.getDomain(),debug=['always']) 如果不是客户端连接((服务器,5222)): raise IOError('无法连接到服务器') 如果不是client.auth(jid.getNode(),PASS): raise IOError('无法使用服务器进行身份验证') message=xmpp.protocol.message(frm=client.Bind.bound[0],to=“-@chat.facebook.com”,typ=“chat”,body=“Hello world”,) client.SendAndWaitForResponse(消息)

这对我有用。无论如何,如果您想知道服务器对查询的响应,请使用Client.SendAndWaitForResponse而不是Client.send;)

看起来你做的一切都是对的。尝试将
always
添加到客户端构造函数的
debug
参数中:
C=xmpp.Client(jid.getDomain(),debug=['always'])
。也许这些日志会说得更多一些。:)