无法将用户从iOS客户端注册到Ejabberd服务器 - XMPP

时间:2014-04-25 11:08:18

标签: ios ubuntu xmpp ejabberd

我启动并运行了一个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

enter image description here

知道怎么做吗?这与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>"
)

任何信息对我都非常有帮助。不知道我哪里错了 谢谢,感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您真的想注册(创建)新(持久)用户,还是登录(先前创建的)现有帐户?或者您不想关心并希望匿名临时登录而无需持久帐户? 您的ejabberd现已配置为接受匿名登录,但您正在尝试对现有用户进行身份验证。如果您正在使用XMPPFramework并希望获得临时登录,请使用[xmppStream loginAnonymously:],服务器将使用临时ID登录。

但是如果你想使用持久性帐户数据库,则需要将auth_method更改为其他内容(查看ejabberd文档),创建用户(可以在服务器端创建它,或者从客户端注册新用户,或者使用来自不同应用程序的现有用户的数据库),然后才能使用给定的用户名和密码进行身份验证。