無法使用 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,您可以透過將以下程式碼新增至腳本來取得 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

相關內容