我正在尝试用 Python 编写一个脚本来连接到 Facebook 聊天。但我就是无法做到。代码如下:
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",))
这是我收到的错误:
An error occurred while looking up _xmpp-client._tcp.chat.facebook.com
这是调试器输出这里。
这表明我确实通过了身份验证(第 136 行),但不知何故消息仍未发送。我真的被这个问题困扰了好几天。
答案1
正如@grawity 指出的那样,您需要获取 JID,可以通过在脚本中添加以下代码来获取。
在代码中,通过服务器进行身份验证后,您可以向服务器请求联系人列表。在您的代码中添加以下内容:
C.sendInitPresence(requestRoster=1)
rosterobject = C.getRoster()
如果您只想检查/打印 JID,您可以使用以下循环来完成。
for i in rosterobject.getItems():
print i
在名册对象中,你应该有联系人,也就是 JID,现在在下一个语句中使用该 JID,
C.send(xmpp.Message("[email protected]","Hello world from script",))
我希望这能解决你的问题。
答案2
username@chat.facebook.com
JID 仅在身份验证期间有效。要发送消息,您必须使用JID,您可以从 XMPP 名册中找到它。(但是,向自己发送消息不起作用。)-profileid@chat.facebook.com