SleekXMPP-Как проверить, аутентифицирован ли пользователь или нет?
Как говорится в вопросе, как я могу это сделать? Ниже приведен код
import logging
from sleekxmpp import ClientXMPP
logging.basicConfig(level=logging.DEBUG, format='%(levelname)-8s %(message)s')
def on_session(event):
xmpp.get_roster()
xmpp = ClientXMPP(jid, password)
xmpp.add_event_handler('session_start', on_session)
if xmpp.connect():
print xmpp.authenticated # Always prints `False`
xmpp.process(block=True)
Я вижу эту печать в журналах, но я скорее хочу проверить это и в коде. Как мне это сделать?
1 ответ
Решение
В XMPP аутентификация обрабатывается SASL, который обычно запускается после подключения клиента.
В вашем случае простой успех соединения не означает, что аутентификация была выполнена. Вам нужно установить обработчик событий для успешной и неудачной аутентификации SASL. Проходя через события sleekxmpp, я уверен, что это можно сделать с помощью мониторинга. auth_success
а также failed_auth
События. Возможный код будет:
xmpp.add_event_handler("failed_auth", on_failed_auth)
xmpp.add_event_handler("auth_success", on_auth_success)