我启动并运行了一个EJabberd服务器。我正在iOS中编写一个简单的聊天客户端,我尝试注册用户。但我无法注册用户。我确信该请求正在击中Ejabberd服务器。
登录服务器位于
之下=INFO REPORT==== 2014-04-25 10:46:51 ===
I(<0.381.0>:ejabberd_listener:281) : (#Port<0.3853>) Accepted connection {{211,28,44,250},52988} -> {{172,31,0,235},5222}
=INFO REPORT==== 2014-04-25 10:46:52 ===
I(<0.398.0>:ejabberd_c2s:802) : ({socket_state,gen_tcp,#Port<0.3853>,<0.397.0>}) Failed authentication for ioc1@localhost
知道怎么做吗?这与authmethod有关吗?
这就是我在ejabberd.cfg
中的内容{host_config, "localhost", [{auth_method, [anonymous]},
{anonymous_protocol, sasl_anon}]}.
以下是来自XCODE的日志
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>ioc1@localhost</username>",
"<password>ioc</password>",
"<name>ioc1@localhost</name>",
"<accounttype>1</accounttype>",
"<devicetoken>680</devicetoken>",
"<email>ioc1@localhost</email>"
)
任何信息对我都非常有帮助。不知道我哪里错了 谢谢,感谢您的帮助
答案 0 :(得分:1)
您真的想注册(创建)新(持久)用户,还是登录(先前创建的)现有帐户?或者您不想关心并希望匿名临时登录而无需持久帐户?
您的ejabberd现已配置为接受匿名登录,但您正在尝试对现有用户进行身份验证。如果您正在使用XMPPFramework并希望获得临时登录,请使用[xmppStream loginAnonymously:]
,服务器将使用临时ID登录。
但是如果你想使用持久性帐户数据库,则需要将auth_method
更改为其他内容(查看ejabberd文档),创建用户(可以在服务器端创建它,或者从客户端注册新用户,或者使用来自不同应用程序的现有用户的数据库),然后才能使用给定的用户名和密码进行身份验证。