使用 ejabberd 将 nick 字段添加到注册新的 xmpp 用户名
Posted
技术标签:
【中文标题】使用 ejabberd 将 nick 字段添加到注册新的 xmpp 用户名【英文标题】:Adding nick field to registration new xmpp username using ejabberd 【发布时间】:2018-06-05 11:09:37 【问题描述】:我想从客户端发送“昵称”字段以在乐队注册中使用 ejabberd 注册新用户名。但服务器仅将用户名、密码和说明字段发送回客户端进行填写。我检查了下面的 mod_register 来修改这些字段,但没有提供可用的。
https://docs.ejabberd.im/admin/configuration/#mod-register
2018-05-29 23:01:08.426 [debug] <0.4613.3>@xmpp_socket:send:218 (tls|<0.4613.3>) Send XML on stream = <<"
<iq xml:lang='en' from='xmpp.test.in' type='result' id='mCbQBXKp-Sd4'>
<query xmlns='jabber:iq:register'>
<username/>
<password/>
<instructions>Choose a username and password to register with this server</instructions>
</query>
</iq>">>
谁能帮助我如何让昵称包含在注册本身中?
【问题讨论】:
【参考方案1】:如果您使用 android 的 Smack 客户端,您可以在 createAccount 方法中发送其他属性,例如:
public void signup(String user, String password, String nickname) throws SmackInvocationException
connect();
Map<String, String> attributes = new HashMap<String, String>();
attributes.put("name", nickname);
try
AccountManager.getInstance(con).createAccount(user, password, attributes);
catch (Exception e)
throw new SmackInvocationException(e);
另一种方法是将 Vcard 与 VcardManager 一起使用,并在 smack 中设置昵称(登录或注册后):
private Context context;
private XMPPConnection con;
public SmackVCardHelper(Context context, XMPPConnection con)
this.context = context;
this.con = con;
public void save(String nickname) throws SmackInvocationException
VCard vCard = VCardManager.getInstanceFor(connection).loadVCard();
try
vCard.setNickName(nickname);
vCard.saveVCard(vcard);
catch (Exception e)
throw new SmackInvocationException(e);
【讨论】:
以上是关于使用 ejabberd 将 nick 字段添加到注册新的 xmpp 用户名的主要内容,如果未能解决你的问题,请参考以下文章