如何从 Smack 4.1 创建帐户

Posted

技术标签:

【中文标题】如何从 Smack 4.1 创建帐户【英文标题】:How to create an account from Smack 4.1 【发布时间】:2015-01-29 17:40:23 【问题描述】:

我正在尝试在 jabber.at 上从 Smack for android 创建一个帐户。 这是我的代码:

XMPPTCPConnectionConfiguration conf= XMPPTCPConnectionConfiguration.builder()
                                .setServiceName("jabber.at")
                                .build();
XMPPTCPConnection connection = new XMPPTCPConnection(conf);

connection.addConnectionListener(xmppConnectionListener);
connection.connect();

AccountManager accountManager = AccountManager.getInstance(connection);
Map<String, String> map = new HashMap<String, String>();
map.put("username", usr);
map.put("password", pwd);
map.put("email", email);
accountManager.createAccount(usr, pwd, map);

我遇到了一个错误:

W/System.err﹕ org.jivesoftware.smack.packet.XMPPError@2beba168
W/System.err﹕ at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:217)
W/System.err﹕ at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:198)

我尝试过使用和不使用地图,同样的错误。 根据 jabber.at 的 Mathias Ertl 的说法,可以远程创建帐户,所以我在某处做错了。有什么想法吗?

【问题讨论】:

试试 Smack 4.1.0-beta2-SNAPSHOT。 抱歉,答案迟了,但 Smack 4.1.0 和 Openfire 3.10.0 可以解决问题。谢谢。 如果你得到答案,你可以写下答案并将其标记为正确,以便其他人得到帮助。就像我需要的:) 【参考方案1】:

检查您的服务器是否支持远程帐户创建。

accountManager.supportsAccountCreation()

【讨论】:

它返回 org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: bad-request - modify

以上是关于如何从 Smack 4.1 创建帐户的主要内容,如果未能解决你的问题,请参考以下文章

使用 Smack 从 2 个不同的 android 设备登录到同一个 jabber 帐户

Smack 错误未授权(401)

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

如何使用 Smack 4.1 创建、发送和接收 IQ 数据包

如何从 Smack 4.1 中的实时消息中获取服务器时间戳

当机器人应用程序是在单独的帐户下创建时,我如何从我的机器人帐户发送推文?