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

标签 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>"
)

任何信息都会对我很有帮助。不确定我哪里出错了 感谢并感谢您的帮助

最佳答案

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

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

关于ios - 无法将用户从 iOS 客户端注册到 Ejabberd 服务器 - XMPP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23291316/

相关文章:

ios - 如何在 Fabric Crashlytics 中禁用 LLVM 代码覆盖率

linux - 在bash中检测公共(public)IP地址的方法

c++ - 调试 fastcgi 应用程序

java - 我们如何从strope连接中提取rid和sid的值

ios - 发送大尺寸图像、视频和音频时 XMPP 客户端断开连接

ios - 如何从 View 的 Controller 获取 Storyboard View 中的 UI 元素的引用?

ios - 如何在用户输入数字时格式化 UITextField 中的 NSString 值?

在 ubuntu 中安装 Python pip

android - 如何在 Smack 4.2 中使用证书

ios - 删除后退栏按钮标题 Swift