繁体   English   中英

XMPP注册新用户

[英]XMPP register new user

我在使用XMPP时遇到了很多麻烦,我是新手,我发现的所有示例都已经有一个帐户,可以用来连接它们并执行操作。

我的问题涉及新用户。 没有帐户的人必须能够注册自己然后登录。但是,据我了解,您首先需要创建一个连接,然后才能创建用户。 因此,没有帐户就无法创建一个帐户。

我一直在阅读的一些链接:

http://alvinalexander.com/java/jwarehouse/eclipse/platform-ui-home/eclipsecon/tutorial/example2/org.jivesoftware.smack/src/org/jivesoftware/smack/AccountManager.java.shtml

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

https://gist.github.com/mindjiver/1605194

因此,基本上,我需要在没有用户登录的情况下创建连接。 然后创建一个用户并用该用户登录。

所以我发现了这一点:

如何使用(a)Smack库在XMPP上注册新用户

但似乎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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM