3

Python を使用して XMPP メッセージを送信しようとしていますが、うまくいきません。認証段階で失敗しているようです。以前の質問からこの例を取り上げ、テスト用に Gmail アカウントをセットアップしました。

import xmpp

username = 'randomtest603@gmail.com'
passwd = 'ThePass123'
to='randomtest604@gmail.com'
msg='hello :)'

client = xmpp.Client('gmail.com')
client.connect(server=('talk.google.com',5223))
client.auth(username, passwd, 'botty')
client.sendInitPresence()
message = xmpp.Message(to, msg)
message.setAttr('type', 'chat')
client.send(message)

多くのデバッグ出力がありますが、これは失敗したことを示している部分です

DEBUG: socket       sent  <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">cmFuZG9tdGVzdDYwM0BnbWFpbC5jb21AZ21haWwuY29tAHJhbmRvbXRlc3Q2MDNAZ21haWwuY29tAFRoZVBhc3MxMjM=</auth>
DEBUG: socket       got   <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
  <invalid-authzid/>
  </failure>
  </stream:stream>
DEBUG: dispatcher   ok    Got urn:ietf:params:xml:ns:xmpp-sasl/failure stanza
DEBUG: dispatcher   ok    Dispatching failure stanza with type-> props->  [u'urn:ietf:params:xml:ns:xmpp-sasl'] id->None
DEBUG: sasl         error Failed SASL authentification: <invalid-authzid />

しかし、最後にこれも取得します

DEBUG: socket       sent  <presence id="2" />
DEBUG: socket       sent  <message to="randomtest604@gmail.com" type="chat" id="3">
  <body>hello :)</body>
  </message>

この xmpppy と sleekxmpp を試しましたが、結果は同じです。この分野は私にとって初めてのことなので、おそらく初心者の間違いを犯しているでしょう。誰かアイデアはありますか?

ありがとう

4

1 に答える 1

3

あなたの問題はpython固有でもライブラリ固有でもありません。電話をかけるときxmpp.Client('gmail.com')は、ユーザー名のドメイン部分を「gmail.com」として指定しています。したがって、使用しているユーザー名からそれを省略する必要があります。

3 行目を次のように修正します。

username = 'randomtest603'

うまくいくはずです(このテスト用にアプリケーション固有のパスワードを生成した後、自分のアカウントで試してみましたが、ユーザー名から「@gmail.com」を省略した場合にのみ機能しました。そうしないと、あなたと同じエラーが発生しました)。

于 2013-02-27T09:42:57.130 に答える