I am trying to connect to gtalk using xmpppy. How do I authenticate? Simple code I found in many places isn't working
-
07-07-2021 - |
Frage
The code I used:
import xmppy
jid = xmpp.JID('user@gmail.com')
cl = xmpp.Client(jid.getDomain())
cl.connect(server=('talk.google.com',5222))
cl.auth('user@gmail.com', 'password','something')
It seems to be working till the connect, I get 'tls' as a return from connect.
After that, the cl.auth
fails.
I have tried using the user name with and without the @gmail.com . I have tried with a different user, so my password is not wrong.
I have tried using 5223 instead of 5222, in which case i get 'ssl' as a return.
Here is the debug output I get:
DEBUG: socket got <stream:stream from="gmail.com" id="960A4092BC8F9722" version="1.0" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client">
<stream:features>
<mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
<mechanism>PLAIN</mechanism>
<mechanism>X-GOOGLE-TOKEN</mechanism>
<mechanism>X-OAUTH2</mechanism>
</mechanisms>
</stream:features>
DEBUG: dispatcher warn Unknown stanza: features
DEBUG: dispatcher ok Dispatching unknown stanza with type-> props->[u'urn:ietf:params:xml:ns:xmpp-sasl'] id->None
DEBUG: sasl start Plugging <xmpp.auth.SASL instance at 0x2f22998> into <xmpp.client.Client instance at 0x2f19bd8>
DEBUG: dispatcher info Registering handler <bound method SASL.SASLHandler of <xmpp.auth.SASL instance at 0x2f22998>> for "challenge" type-> ns->(urn:ietf:params:xml:ns:xmpp-sasl)
DEBUG: dispatcher warn Registering namespace "urn:ietf:params:xml:ns:xmpp-sasl"
DEBUG: dispatcher info Registering protocol "unknown" as <class 'xmpp.protocol.Protocol'>(urn:ietf:params:xml:ns:xmpp-sasl)
DEBUG: dispatcher info Registering protocol "default" as <class 'xmpp.protocol.Protocol'>(urn:ietf:params:xml:ns:xmpp-sasl)
DEBUG: dispatcher warn Registering protocol "challenge" as <class 'xmpp.protocol.Protocol'>(urn:ietf:params:xml:ns:xmpp-sasl)
DEBUG: dispatcher info Registering handler <bound method SASL.SASLHandler of <xmpp.auth.SASL instance at 0x2f22998>> for "failure" type-> ns->(urn:ietf:params:xml:ns:xmpp-sasl)
DEBUG: dispatcher warn Registering protocol "failure" as <class 'xmpp.protocol.Protocol'>(urn:ietf:params:xml:ns:xmpp-sasl)
DEBUG: dispatcher info Registering handler <bound method SASL.SASLHandler of <xmpp.auth.SASL instance at 0x2f22998>> for "success" type-> ns->(urn:ietf:params:xml:ns:xmpp-sasl)
DEBUG: dispatcher warn Registering protocol "success" as <class 'xmpp.protocol.Protocol'>(urn:ietf:params:xml:ns:xmpp-sasl)
DEBUG: socket sent <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">Y3MxMGIwNTlAZ21haWwuY29tQGdtYWlsLmNvbQBjczEwYjA1OUBnbWFpbC5jb20AcHZ6bXZoN3FjYzE=</auth>
DEBUG: socket error Socket error while receiving data
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/xmpppy-0.5.0rc1-py2.7.egg/xmpp/transports.py", line 153, in receive
try: received = self._recv(BUFLEN)
SSLError: [Errno 8] _ssl.c:1359: EOF occurred in violation of protocol
DEBUG: client stop Disconnect detected
DEBUG: socket error Socket operation failed
DEBUG: sasl stop Plugging <xmpp.auth.SASL instance at 0x2f22998> out of <xmpp.client.Client instance at 0x2f19bd8>.
Lösung
Solved this, was this stupidest thing. Gmail was blocking access as it considered my applications activity 'suspicious and unusual' I had to login to my account from a browser, tell them it was me and then login from the application in 10 minutes
Andere Tipps
for some odd reason it (for some users) only works with the domain googlemail.com. maybe you want to try this one. so your username is without @ or any domain, and the server is googlemail.com