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)
Другие вопросы по тегам