【问题标题】:"must be str, not bytes" while trying to authenticate to xmpp server尝试对 xmpp 服务器进行身份验证时“必须是 str,而不是字节”
【发布时间】:2020-11-21 20:28:25
【问题描述】:

我的代码是:

import xmpp

jabberid = "admin@mydomain.com"
password = "password"
receiver = "admin@mydomain.com"
message  = "hello world"

jid = xmpp.protocol.JID(jabberid)
connection = xmpp.Client(server=jid.getDomain())
connection.connect()
connection.auth(user=jid.getNode(), password=password,resource=jid.getResource())

我收到此错误:

 File "/home/eduardo/.local/share/virtualenvs/xmpp-sv-KIKvfzDF/lib/python3.6/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/eduardo/.local/share/virtualenvs/xmpp-sv-KIKvfzDF/lib/python3.6/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/eduardo/Desktop/adiconf/xmpp-sv/api/main/user/routes.py", line 33, in add
    connection.auth(user=str(jid.getNode()), password=str(password), resource=str(jid.getResource()))
  File "/home/eduardo/.local/share/virtualenvs/xmpp-sv-KIKvfzDF/lib/python3.6/site-packages/xmpp/client.py", line 228, in auth
    while self.SASL.startsasl=='in-process' and self.Process(1): pass
  File "/home/eduardo/.local/share/virtualenvs/xmpp-sv-KIKvfzDF/lib/python3.6/site-packages/xmpp/dispatcher.py", line 126, in Process
    raise _pendingException[0](_pendingException[1]).with_traceback(_pendingException[2])
  File "/home/eduardo/.local/share/virtualenvs/xmpp-sv-KIKvfzDF/lib/python3.6/site-packages/xmpp/dispatcher.py", line 304, in dispatch
    handler['func'](session,stanza)
  File "/home/eduardo/.local/share/virtualenvs/xmpp-sv-KIKvfzDF/lib/python3.6/site-packages/xmpp/auth.py", line 179, in SASLHandler
    self.DEBUG('Got challenge:'+data,'ok')
TypeError: must be str, not bytes

我正在使用 xmpppy 模块,但我不知道为什么?因为我传递给 connection.auth 的参数都是字符串

【问题讨论】:

  • 不要认为异常与您传入的参数有关。听起来像 xmpp 库中的错误。您能否首先确保所有要求都是最新的?

标签: python authentication connection xmpp xmpppy


【解决方案1】:

您必须解码 lib 中“auth”文件中的数据。这条线一定是这样的。

data=base64.b64decode(incoming_data).decode()

【讨论】:

  • @Dallsant pleaser 回复此答案。
猜你喜欢
  • 2018-09-13
  • 2020-01-06
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多