Intereting Posts

Как зарегистрировать нового пользователя в XMPP, используя (a) Библиотека Smack

Я установил сервер xmpp и клиент android, используя отличный пост здесь … У меня есть некоторые предварительно определенные пользователи, настроенные на сервере xmpp, и я могу войти в систему с этими учетными данными.

Теперь из моего приложения я хочу зарегистрироваться в качестве новых пользователей на сервере xmpp через клиент android. Может кто-нибудь, пожалуйста, предложите мне, как достичь этого … Любая помощь будет оценена по достоинству … !!!

Solutions Collecting From Web of "Как зарегистрировать нового пользователя в XMPP, используя (a) Библиотека Smack"

У Smack есть функция регистрации InBand, которая может использоваться через класс AccountManager . Обратите внимание, что не каждый сервер имеет эту функцию, реализованную / включенную.

Может быть, я опаздываю, но если вы используете последний smack-android:4.1.0 , вы можете попробовать под кодом для создания XMPPTCPConnectionConfiguration connection XMPPTCPConnectionConfiguration и зарегистрировать пользователя:

 // Creating a connection XMPPTCPConnectionConfiguration connConfig = XMPPTCPConnectionConfiguration.builder() .setHost("myHost.com") // Name of your Host .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) .setPort(5222) // Your Port for accepting c2s connection .setDebuggerEnabled(true) .setServiceName("myServiceName") .build(); AbstractXMPPConnection connection = new XMPPTCPConnection(connConfig); try { // connecting... connection.connect(); Log.i("TAG", "Connected to " + connection.getHost()); // Registering the user AccountManager accountManager = AccountManager.getInstance(connection); accountManager.sensitiveOperationOverInsecureConnection(true); accountManager.createAccount(username, password); // Skipping optional fields like email, first name, last name, etc.. } catch (SmackException | IOException | XMPPException e) { Log.e("TAG", e.getMessage()); xmppClient.setConnection(null); } 

Просто уточняйте, что опубликовал Flow . Класс AccountManager содержит все компоненты для ведения учетных записей пользователей в XMPP

Предположим, что у вас создан объект соединения.

 AccountManager accountManager=new AccountManager(connection); try { accountManager.createAccount("username", "password"); } catch (XMPPException e1) { Log.d(e1.getMessage(), e1); } 

Я хочу обновить ответ, чтобы отразить изменение в версии 4.0 версии Asmack. Connection.getAccountManager () теперь AccountManager.getInstance (XMPPConnection)

 AccountManager accountManager=AccountManager.getInstance(connection); try { accountManager.createAccount("username", "password"); } catch (XMPPException e1) { Log.d(e1.getMessage(), e1); } 

Уже слишком поздно, но надеюсь, что это поможет

  XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration .builder(); config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); config.setServiceName("nouman.test"); config.setHost(serverAddress); config.setPort(5222); config.setDebuggerEnabled(true); XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true); XMPPTCPConnection.setUseStreamManagementDefault(true); config.setSendPresence(true); config.setDebuggerEnabled(true); config.setSendPresence(true); config.setCompressionEnabled(false); connection = new XMPPTCPConnection(config.build()); connection.connect(); AccountManager accountManager = AccountManager.getInstance(connection); Map<String, String> attributes = new HashMap<>(); attributes.put("name", "full_name"); attributes.put("email", "email"); try { if (accountManager.supportsAccountCreation()) { accountManager.sensitiveOperationOverInsecureConnection(true); accountManager.createAccount("username","password", attributes); isAccountCreated = true; } } catch (Exception e) { //TODO : Case 409 or Message conflict is the case of username exist handle the case LogUtil.printStackTrace(e); } 

Убедитесь, что у вас есть правильное имя службы, иначе вы получите ошибку с неправильным запросом.

Я решил это, разработав веб-сервис, который берет имя пользователя и пароль как параметры сообщения. Если мы опубликуем имя пользователя и пароль, веб-сервис регистрирует нового пользователя.

Вместо того, чтобы зарегистрироваться в приложении, я нашел это довольно простым …

Вам необходимо реализовать в клиентской функции InBand Registration