2017-02-24 4 views
0

質問によれば、どうすればいいですか?以下はコードです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_successfailed_authというイベントを監視することで可能と信じています。可能なコードは次のとおりです:

xmpp.add_event_handler("failed_auth", on_failed_auth) 
xmpp.add_event_handler("auth_success", on_auth_success) 
+0

ありがとう@Manishgこれをもたらすために。 didntはこれを知っていた。私はあなたの答えをhttp://stackoverflow.com/questions/9815422/sleekxmpp-threaded-authentication?rq=1と組み合わせて、私のユースケースを解決することができます。 – PythonEnthusiast

+0

BTW SleekXMPPにはどのようなイベントがありますか?同じwikiはありますか?すべてのイベントを知りたいですか? Thans – PythonEnthusiast

+0

http://stackoverflow.com/questions/42485797/xmpp-roster-subscription-explaination – PythonEnthusiast

関連する問題