[英]XMPP register new user
我在使用XMPP时遇到了很多麻烦,我是新手,我发现的所有示例都已经有一个帐户,可以用来连接它们并执行操作。
我的问题涉及新用户。 没有帐户的人必须能够注册自己然后登录。但是,据我了解,您首先需要创建一个连接,然后才能创建用户。 因此,没有帐户就无法创建一个帐户。
我一直在阅读的一些链接:
https://code.google.com/p/lxmppd/issues/detail?id=328
https://davanum.wordpress.com/2007/12/31/android-just-use-smack-api-for-xmpp/
http://www.igniterealtime.org/builds/smack/dailybuilds/documentation/connections.html
因此,基本上,我需要在没有用户登录的情况下创建连接。 然后创建一个用户并用该用户登录。
所以我发现了这一点:
但似乎AccountManager类已过时或某些原因,因为我无法在同一路径中找到它。 ( http://www.igniterealtime.org/builds/smack/docs/4.0.6/javadoc/org/jivesoftware/smack/AccountManager.html )
因此,问题是:如何创建一个新帐户,然后使用该帐户登录(从新用户的角度)?
一条小代码段或到某些源的链接将受到高度赞赏。
编辑1:我到现在为止:
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
.setServiceName("jabber.org")
.setHost(AppConfig.XMPP_HOST)
.setPort(Integer.parseInt(AppConfig.XMPP_PORT))
.build();
XMPPConnection connection = new XMPPTCPConnection(config);
现在我需要实例化一个AccountManager对象,但是在smack 4.1中不可用
我正在尝试按照以下示例操作: 如何从Smack 4.1创建帐户
即使我读到它应该在smackx中。 我可以在smackx中找到的唯一东西是:
import org.jivesoftware.smackx.debugger.android.AndroidDebugger
创建帐户的方法是先连接到服务器, 然后初始化帐户创建。 本质上,您可以创建一个连接,在其中可以创建一个帐户,然后继续创建该帐户。 这是我的方法:
XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration.builder()
.setServiceName(SERVICE_NAME)
.setHost(HOST_NAME)
.setPort(5222)
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
.build();
AbstractXMPPConnection connection = new XMPPTCPConnection(conf);
connection.connect(); // Here we create the connection
// Now we create the account:
AccountManager accountManager = AccountManager.getInstance(connection);
accountManager.createAccount(username, password);
// The account has been created, so we can now login
connection.login(username, password);
因此,我们首先初始化连接,创建帐户,然后登录。希望这会有所帮助
我有一个针对Android应用程序的xmpp服务。 我所拥有的是服务器和xmpp服务器中的Java Webserice。 xmpp服务器是OpenFire ,它具有用于通过http请求进行make操作的插件。 这是我注册新用户的Web服务方法。 我想我最终会获得此解决方案,因为像您这样的我无法直接从用户那里注册新用户。 我也在客户端使用asmack。
public int register(Connection conn,String login,String clave){
try {
HttpClient client = new DefaultHttpClient();
client= WebClientDevWrapper.wrapClient(client);
//client.setStrictMode(true);
//client.setTimeout(60000);
//client.setConnectionTimeout(5000);
HttpPost post = null;
String URL="http://your.ip.server:9090/plugins/userService/userservice" +
"?type=update&secret="+secret_key_of+"&username="+login.substring(1)+"&password="+clave;
post = new HttpPost(URL);
post.setHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8");
HttpResponse httpStatus = null;
int response = 0;
try {
httpStatus = client.execute(post);
response = httpStatus.getStatusLine().getStatusCode();
}
catch (Exception e) {
}
if(response==200){
return 200;
}else{
return 502;
}
} catch (Exception e) {
return 501;
}
}
使用smack 4.0.6版本。 最新版本(现在为4.1.8)没有AccountManager类。 我的Maven依赖项是:
<dependency>
<groupId>org.igniterealtime.smack</groupId>
<artifactId>smack-core</artifactId>
<version>4.0.6</version>
</dependency>
<dependency>
<groupId>org.igniterealtime.smack</groupId>
<artifactId>smack-tcp</artifactId>
<version>4.0.6</version>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.