gpt4 book ai didi

java - 通过 Smack android api 将新用户添加到 ejabberd

转载 作者:搜寻专家 更新时间:2023-11-01 08:35:53 27 4
gpt4 key购买 nike

我已经安装了ejabberd在我的本地服务器上。然后在 spark 中对其功能进行了测试,并且运行良好。现在我想通过 Android 应用程序添加一个新用户。

我尝试通过 spark 添加新用户,但效果很好。我给出的字段是uesrnamepasswordconfirm passwordserver。但是当我尝试使用 smack api 来做到这一点时在 android 应用程序中,它给出了以下错误:

org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: forbidden - auth

我正在使用 createAccount() ,在我下面使用的代码中看到,用于在 smack 中创建新帐户。

AccountManager accountManager = AccountManager.getInstance(conn1);

try {
accountManager.createAccount("tryuser", "qwerty");
Log.i("log", "created user successfully");
} catch (SmackException.NoResponseException e) {
e.printStackTrace();
} catch (XMPPException.XMPPErrorException e) {
e.printStackTrace();
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}

我检查过它是否支持通过supportsAccountCreation()创建新账户并返回 true

我已经在 ejabberd 服务器中将我的 register 规则更改为 allow all。我不认为它有任何问题,因为我可以从 spark 创建帐户,但在 smack 中出现错误。

我已经研究了以下与该主题相关的 SO 问题,但没有运气。

有人对如何解决这个问题有什么建议吗?

最佳答案

请尝试以下 -

AccountManager accountManager = AccountManager.getInstance(connection);
try {
if (accountManager.supportsAccountCreation()) {
accountManager.sensitiveOperationOverInsecureConnection(true);
accountManager.createAccount("userName", "password");

}
} catch (SmackException.NoResponseException e) {
e.printStackTrace();
} catch (XMPPException.XMPPErrorException e) {
e.printStackTrace();
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}

你还需要在 ejabberd.cfg(配置文件)中进行以下设置

{access, register, [{allow, all}]}.

这意味着 - 带内注册允许注册任何可能的用户名。要禁用带内注册,请将“允许”替换为“拒绝”。

并且在 mod_register(同一配置文件中的模块)中请设置如下 -

{access_from, register} 

& 在此之前,请检查您是否已连接到 XMPP 服务器。

这可能会解决您的问题。

关于java - 通过 Smack android api 将新用户添加到 ejabberd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36685654/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com