使用 ejabberd 攻击 UserSearchManager

smack UserSearchManager with ejabberd

我正在尝试使用 ejabberd (15.11) 和 smack (4.1.5) 在 android 上建立聊天。

在发送订阅节之前,我想通过检查 jid 是否已在使用来检查此用户是否存在于我的服务器上:

    UserSearchManager userSearchManager = new UserSearchManager(connection);
    Form searchForm = userSearchManager.getSearchForm("vjud." + connection.getServiceName());       
    Form answerForm = searchForm.createAnswerForm();
    answerForm.setAnswer("user", userName + "@" + connection.getServiceName());
    ReportedData data = userSearchManager.getSearchResults(answerForm, "vjud." + connection.getServiceName());

我从我的服务器获得了多列,但没有行 - 意味着没有数据。 不管我只取 userName 还是 Jid。

除了用密码注册用户外,我什么也没做,所以没有设置名字或类似的东西。

谁能告诉我哪里做错了,或者哪里是查找设置的 Answer 参数的最佳位置?我搜索了很多但找不到任何帮助。

Jabber 用户目录基于 Vcard。没有 Vcard 的用户将无法通过用户目录进行搜索。这意味着确实,注册用户不足以使其出现在 Jabber 搜索目录中。