XMPP 服务器:已创建帐户但未保存属性

Posted

技术标签:

【中文标题】XMPP 服务器:已创建帐户但未保存属性【英文标题】:XMPP server : Account created but attributes not getting saved 【发布时间】:2015-03-31 04:23:31 【问题描述】:

我正在 ejabberd 服务器上创建新用户。用户已创建。 在下面的代码中,创建了用户 918,但没有保存任何属性。

ejabberd 服务器的访问规则是:[register, [allow,all]]

但是,我与createAccount() 一起传递的属性不会保存在 ejabberd 服务器上。

使用的库 - asmack-android-8-4.0.7、dnsjava-2.1.7。 XMPP 服务器 - ejabberd 2.1.11

代码是

    ConnectionConfiguration config = new ConnectionConfiguration("myserver.co");
     config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
     conn1 = new XMPPTCPConnection(config);
     conn1.connect();

     AccountManager accMan = AccountManager.getInstance(conn1);
     Map<String, String> attributes = new HashMap<String, String>();
     attributes.put("phone", "237");
     attributes.put("misc", "123");

     accMan.createAccount("918", "hellopass", attributes);

     conn1.login("918", "hellopass");
     accMan = AccountManager.getInstance(conn1);
     Log.d(TAG, "acc IMEI " + accMan.getAccountAttribute("misc")); // null returned here
    Log.d(TAG, "acc phone " + accMan.getAccountAttribute("phone")); // null returned here

上面贴的最后两行代码,返回空值。

我不知道我缺少什么才能正确创建属性也被保存的帐户。

谢谢 维尔佩什。

【问题讨论】:

【参考方案1】:

属性不存储在帐户上,而是存储在 Vcard 上。注册用户时,只能传递用户名和密码。 对于用户信息,您应该查看设置您的 Vcard。

【讨论】:

以上是关于XMPP 服务器:已创建帐户但未保存属性的主要内容,如果未能解决你的问题,请参考以下文章

XMPP 注销(Smack API)

创建了核心数据实体但未保存属性

请推荐一个具有自动帐户注册功能的好 XMPP 服务器

服务似乎已创建,但未创建

xmpp 从服务器中删除帐户

我如何从客户端知道一个帐户是不是存在于 XMPP 服务器中?