2013-02-27 153 views
3

我正在嘗試使用Python發送XMPP消息,但無法使其正常工作。這在驗證步驟中似乎失敗了。我從之前的問題中拿出了這個例子,並設置了一個用於測試的gmail帳戶。使用Python發送XMPP消息

import xmpp 

username = '[email protected]' 
passwd = 'ThePass123' 
to='[email protected]' 
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="[email protected]" type="chat" id="3"> 
    <body>hello :)</body> 
    </message> 

我已經試過這部分xmpppy和sleekxmpp,結果是一樣的。這個區域對我來說是新的,所以我可能犯了一個新手的錯誤,任何人有任何想法?

謝謝

+0

您使用的是什麼XMPP模塊? – 2014-08-25 18:04:23

回答

3

你的問題不是python特定的,也不是庫特定的。當您致電xmpp.Client('gmail.com')時,您將用戶名的域名部分指定爲「gmail.com」。因此,您應該從您使用的用戶名中省略。

修改你的第三個行這樣的:

username = 'randomtest603' 

它應該工作(我用我自己的帳戶,試了一下這個測試生成應用程序專用密碼後,和它的工作只有當我省略了「@gmail。 com'從用戶名,否則我得到了同樣的錯誤,你)。

+0

謝謝,這就解決了認證問題 – johnB 2013-02-27 20:35:58

+0

很高興有幫助:) – entropy 2013-02-27 21:38:36

+0

@entropy,我得到了同樣的問題。我按照你說的做了,但仍然有這個錯誤。怎麼辦? – Mulagala 2014-11-25 13:45:47