Python 我正在尝试使用xmpppy连接到gtalk。如何进行身份验证?我在许多地方找到的简单代码不是';行不通

Python 我正在尝试使用xmpppy连接到gtalk。如何进行身份验证?我在许多地方找到的简单代码不是';行不通,python,google-talk,xmpppy,Python,Google Talk,Xmpppy,我使用的代码是: 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') 它似乎一直在工作,直到连接,我从连接返回“tls”。 之后,cl.auth将失败。 我已经尝试过使用带有@gmail.com和不带@

我使用的代码是:

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')
它似乎一直在工作,直到连接,我从连接返回“tls”。 之后,
cl.auth
将失败。 我已经尝试过使用带有@gmail.com和不带@gmail.com的用户名。我已尝试使用其他用户,因此我的密码没有错误。 我尝试使用5223而不是5222,在这种情况下,我会得到“ssl”作为返回

以下是我得到的调试输出:

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>.
DEBUG:socket已获取
平原
X-GOOGLE-TOKEN
X-OAUTH2
调试:调度程序警告未知节:功能
调试:dispatcher ok使用type->props->[u'urn:ietf:params:xml:ns:xmpp sasl']id->None分派未知节
调试:sasl开始插入到
调试:dispatcher信息为“challenge”类型->ns->注册处理程序(urn:ietf:params:xml:ns:xmpp-sasl)
调试:dispatcher警告注册命名空间“urn:ietf:params:xml:ns:xmpp-sasl”
调试:调度程序信息将协议“未知”注册为(urn:ietf:params:xml:ns:xmpp-sasl)
调试:调度程序信息将协议“默认”注册为(urn:ietf:params:xml:ns:xmpp-sasl)
调试:调度程序警告将协议“挑战”注册为(urn:ietf:params:xml:ns:xmpp-sasl)
调试:调度程序信息为“失败”类型->ns->注册处理程序(urn:ietf:params:xml:ns:xmpp-sasl)
调试:调度程序警告将协议“失败”注册为(urn:ietf:params:xml:ns:xmpp-sasl)
调试:调度程序信息为“成功”类型注册处理程序->ns->(urn:ietf:params:xml:ns:xmpp-sasl)
调试:调度程序警告将协议“成功”注册为(urn:ietf:params:xml:ns:xmpp-sasl)
调试:套接字发送Y3MXMGIWNTLAZ21HAWWUY29TQGDTYWLSLMNVBQBJCZEWYJA1UBNBWFPBC5JB20ACHZ6BXZON3FJYZE=
调试:套接字错误接收数据时发生套接字错误
回溯(最近一次呼叫最后一次):
接收中的文件“/usr/local/lib/python2.7/dist packages/xmpppy-0.5.0rc1-py2.7.egg/xmpp/transports.py”,第153行
try:received=self.\u recv(BUFLEN)
SSLError:[Errno 8]\u ssl.c:1359:EOF违反了协议
调试:检测到客户端停止断开连接
调试:套接字错误套接字操作失败
调试:sasl停止从中插入。
出于某种奇怪的原因,它(对于某些用户)只适用于googlemail.com域。也许你想试试这个。
所以你的用户名没有@或任何域,服务器是googlemail.com

解决了这个问题,这是最愚蠢的事情。 Gmail认为我的应用程序活动“可疑且不寻常”,因此阻止了访问 我必须从浏览器登录到我的帐户,告诉他们是我,然后在10分钟内从应用程序登录