
我正在嘗試用 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.com
JID 僅在身份驗證期間有效。要傳送訊息,您必須使用JID,您可以從 XMPP 名冊中找到它。 (不過,給自己發送訊息是行不通的。)-profileid@chat.facebook.com