无法使用 xmpppy 库通过 Python 连接到 Facebook 聊天

无法使用 xmpppy 库通过 Python 连接到 Facebook 聊天

我正在尝试用 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.comJID 仅在身份验证期间有效。要发送消息,您必须使用JID,您可以从 XMPP 名册中找到它。(但是,向自己发送消息不起作用。)-profileid@chat.facebook.com

相关内容