Java 创建新用户时发生Smack XMPP错误:禁止-验证

Java 创建新用户时发生Smack XMPP错误:禁止-验证,java,xmpp,smack,mongoose-im,Java,Xmpp,Smack,Mongoose Im,我正在尝试通过管理员帐户创建新用户。但是我收到了auth错误。 我试过这样的答案,但没用 创建新用户的我的代码: AccountManager accountManager = AccountManager.getInstance(mConnection); if (accountManager.supportsAccountCreation()) { try { accountManager.createAccount(

我正在尝试通过管理员帐户创建新用户。但是我收到了auth错误。 我试过这样的答案,但没用

创建新用户的我的代码:

AccountManager accountManager = AccountManager.getInstance(mConnection);

        if (accountManager.supportsAccountCreation()) {
            try {
                accountManager.createAccount(username, password);
            }

            catch (XMPPException ex) {
                LOG.info(ex.getMessage(), ex);
            }

        }
        else{
            LOG.error("Server doesn't support creating new accounts");
        }
我允许在配置中注册所有:

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

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

{mod_register, [
 ...
 {ip_access, [{allow, "127.0.0.0/8"},
              {deny, "0.0.0.0/0"}]},
 {access_from, register_from},
 {access, register}
]},
即使使用此配置,我也有错误:

org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: forbidden - auth
    at org.jivesoftware.smack.XMPPException$XMPPErrorException.ifHasErrorThenThrow(XMPPException.java:135)
    at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:232)
    at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:213)
    at org.jivesoftware.smackx.iqregister.AccountManager.createAccount(AccountManager.java:272)
    at org.jivesoftware.smackx.iqregister.AccountManager.createAccount(AccountManager.java:244)
p.S.Smack 4.1.0

解决方案:

step1:


完成所有这三个步骤后,运行你的程序,你将能够在
ejabberd
服务器上注册一个新用户。

你确定你可以使用
{ip_访问,[{allow,“127.0.0.0/8”},{deny,“0.0.0.0/0”}
,也就是说,你是从本地主机连接的吗?@erszcz oh,忘了这一点。在允许列表中添加了我的ip->现在可以工作了。谢谢,伙计。@erszcz但它只适用于[{allow,all}],而[{allow,admin}]我收到相同的错误=/我不确定代码段的上下文,但可能用户没有作为管理员进行身份验证?基本上,此机制用于为自己注册帐户,即匿名用户连接到服务器,为自己注册帐户,然后(可能重新连接并)使用新帐户进行身份验证。如果您想更严格地控制帐户创建,请使用命令行
mongooseimctl
或自定义身份验证模块。@erszcz yeh,mb自定义身份验证模块-是最佳选择。
step2:
step3: