저는 XMPPFramework를 사용하여 iOS 클라이언트를 작성하고 있습니다. 나는 사용자를 재가동시킬 수 없다. 나는 ejabberd 서버를 구성했으며 이것이 실행 중이다. 나는 그것으로 어떤 문제도 가지지 않는다. Ejabberd의 웹 포털에서 사용자를 등록 할 수 있습니다. 하지만 문제는 iOS 클라이언트에서 사용자를 등록하려고 할 때 발생합니다. 서버 로그는 다음과 같습니다.XMPPFramework을 사용하여 Ejabberd에 사용자를 등록 할 수 없습니다.
=INFO REPORT==== 2014-04-26 12:06:43 ===
I(<0.380.0>:ejabberd_listener:281) : (#Port<0.3865>) Accepted connection {{211,28,44,250},49742} -> {{172,31,0,235},5222}
=INFO REPORT==== 2014-04-26 12:06:44 ===
I(<0.424.0>:ejabberd_c2s:802) : ({socket_state,gen_tcp,#Port<0.3865>,<0.423.0>}) Failed authentication for [email protected]
authmethod는 odbc입니다. 데이터와 메시지 저장을 위해 mysql을 사용하기 때문에. I 클라이언트에서 캡처
로그는
2014-04-25 20:46:49:384 iPhoneXMPP[1971:90b] SEND: <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="DIGEST-MD5"/>
2014-04-25 20:46:49:620 iPhoneXMPP[1971:650b] RECV: <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">bm9uY2U9IjMzNzkzODUwOTEiLHFvcD0iYXV0aCIsY2hhcnNldD11dGYtOCxhbGdvcml0aG09bWQ1LXNlc3M=</challenge>
2014-04-25 20:46:49:621 iPhoneXMPP[1971:650b] SEND: <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dXNlcm5hbWU9ImlvYzEiLHJlYWxtPSJsb2NhbGhvc3QiLG5vbmNlPSIzMzc5Mzg1MDkxIixjbm9uY2U9IkMzN0U0NjlBLTg0RUUtNEY3RS1CNTEzLTM5RUJFREU0NzQ3NCIsbmM9MDAwMDAwMDEscW9wPWF1dGgsZGlnZXN0LXVyaT0ieG1wcC9sb2NhbGhvc3QiLHJlc3BvbnNlPTQzYTY5OTVlZmY2Y2UwNzA0YmJkNWM4OWZiNGU5ZDQ1LGNoYXJzZXQ9dXRmLTg=</response>
2014-04-25 20:46:49:865 iPhoneXMPP[1971:4953] RECV: <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>
2014-04-25 20:46:49:865 iPhoneXMPP[1971:90b] iPhoneXMPPAppDelegate: xmppStream:didNotAuthenticate:
2014-04-25 20:46:49.865 iPhoneXMPP[1971:90b] num--680
2014-04-25 20:46:49.866 iPhoneXMPP[1971:90b] elements--(
"<username>[email protected]</username>",
"<password>ioc</password>",
"<name>[email protected]</name>",
"<accounttype>1</accounttype>",
"<devicetoken>680</devicetoken>",
"<email>[email protected]</email>"
)
중요한 라인 아래에 있지 않은
2014년 4월 25일 아래 20 : 46 : 49 : 865 iPhoneXMPP [1971 4953] RECV :
나는 registerwithpassword 메서드를 사용하고 있는데 왜 내가 등록 할 수 없는지 혼란 스럽다. auth_method는 로그인 할 때 인증 메커니즘이 필요하기 때문에 로그인 할 때만 작동합니다. 하지만 여기서 나는 단지 등록 할 뿐이다. 왜 내가 등록 할 수 없습니까? 나는 "@localhost에 대한 인증 실패"라는 로그 라인을 얻고 있기 때문에 호스트 이름에 문제가 없다고 생각합니다.
이는 서버를 때리는 것을 의미합니다. 나를 막고있는 ejabberd.cfg 파일에 누락 된 것이 있습니까?
참고 : 또한, 나는 (도움말에 언급되어 있지만이 mnesia 관련이있다 - DB에 내장 내가 MySQL을 사용하고있다) 내부로 authmethod 시도하고 여전히 같은 문제를 가지고 나는 클라이언트가 아닌 생각 일부 연결 설정으로 인해 사용자를 등록 할 수 있습니다.
문제가 클라이언트 쪽인지 서버 쪽인지. 나를 안내 해줘. 시간 내 줘서 고마워.
iOS 클라이언트에서 등록을 시도하기 전에 XMPP 스트림에 연결해야합니다. – iRuth
@ iRuth- 답장을 보내 주셔서 감사합니다. XMPP 스트림에 연결할 수없는 경우 서버에 로그인 할 수 있습니까? 알려 주시기 바랍니다 –
안녕하세요 전체 - 나는 아직 해결책을 찾지 못했습니다. 그러나 잠재적 인 문제는이 문제에 대한 XMPP 서버의 INBAND 등록 기능 일 수 있습니다. 서버에서 등록을 지원하기 위해 XMPP 서버를 변경했지만 여전히 문제에 직면했습니다. 이는 문제가 발생하여 문제를 해결할 수있는 사람들에게 도움이 될 수 있습니다. –