xmpppyライブラリを使用して、Python経由でFacebookチャットに接続できません


1

Facebookチャットに接続するスクリプトをPythonで記述しようとしています。できません。コードは次のとおりです。

import xmpp
FACEBOOK_ID = "firesofmay@chat.facebook.com"
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("gmjain@chat.facebook.com","Hello world from script",))

これは私が得るエラーです:

An error occurred while looking up _xmpp-client._tcp.chat.facebook.com

そして、これはここのデバッガ出力です

これは、私が認証されていることを示しています(行136)が、それでもメッセージは何とか送信されません。私は今何日もこれで本当に立ち往生しています。

回答:


0

@grawityが指摘したように、次のコードをスクリプトに追加することで取得できるJIDを取得する必要があります。

サーバーで認証した後のコードで、サーバーに連絡先のリストを要求できます。コードにこれを追加し、

C.sendInitPresence(requestRoster=1)
rosterobject = C.getRoster()

JIDを確認/印刷するだけの場合は、次のループでこれを行うことができます。

for i in rosterobject.getItems():
    print i

名簿オブジェクトには、連絡先(別名JID)が必要です。次のステートメントでそのJIDを使用します。

C.send(xmpp.Message("jidfromrosterobj@domain.tld","Hello world from script",))

これで問題が解決することを願っています。


0

username@chat.facebook.comJIDは認証中のみ有効です。メッセージを送信するには、JID を使用する必要があります。これは、XMPP名簿から確認できます。(ただし、自分へのメッセージの送信は機能しません。)-profileid@chat.facebook.com

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.