使用Python发送XMPP消息

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,结果都一样。由于这个领域对我来说很新,所以可能犯了一些初学者的错误,有人有什么想法吗?
谢谢。

你使用的是哪个XMPP模块? - cubecubed
1个回答

3
您的问题不是特定于 Python 或库。当您调用 xmpp.Client('gmail.com') 时,您将用户名的域部分指定为“gmail.com”。因此,您应该从正在使用的用户名中省略它。
请将第三行修改为以下内容:
username = 'randomtest603'

它应该可以工作(我在生成测试的应用程序特定密码后,使用自己的帐户尝试了一下,只有在省略用户名中的“@gmail.com”时才能正常工作,否则我会得到与您相同的错误)。


很高兴能够帮上忙 :) - entropy
@entropy,我遇到了同样的问题。我按照你说的做了,但仍然出现了那个错误。该怎么办? - Mulagala
@Mulagala 没有看到你的代码,无法确定。 - entropy
@entropy,代码与我们在上一个问题中看到的完全相同,并按照您的要求进行了编辑。 - Mulagala
你是否百分之百确定你有正确的凭据?因为我不知道在你的情况下出了什么问题。 - entropy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接