2013-06-15 1 views
4

Привет, я работаю над ejabberd, и я совершенно новичок в этой технологии.Создание нового пользователя с Smack on ejabberd throws XMPP Исключение: запрещено (403)

Я пытаюсь добавить пользователя на моем ejabberd сервере, используя этот код:

try {   
     conf.setSASLAuthenticationEnabled(true);    
     connection.connect(); 
     Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual); 
     Log.i("XMPPClient", "Connected to " 
           +connection.getHost());    
     createUser("tester","testerpass"); 
    } 
    } catch (XMPPException e1) { 
     Log.e("XMPPClient", e1.toString()); 
     xmppClient.setConnection(null); 
    } 

    public void createUser(String user, String pass) {  
      try { 
       //Admin login 
       connection.login(user, pass); 
      } catch (XMPPException e) { 
       e.printStackTrace(); 
      }  
Log.i("connection.isAuthenticated() : ",""+connection.isAuthenticated()); 
      if (connection.isAuthenticated()) { 
       AccountManager manager = connection.getAccountManager();   
       try { 
       manager.createAccount(user, pass); 
       } catch (XMPPException e) { 
       Log.w("[create_user] Cannot create new user: XMPP Exception.", "0"); 
       e.printStackTrace(); 
       } catch (IllegalStateException e) { 
       Log.w("[create_user] Cannot create new user: not logged in.", "0"); 
       e.printStackTrace(); 
       } 
      } 
      } 

Его подключения к серверу и администратора входа идеально Но при создании новой учетной записи дает запрещенную 403 ошибки, который:

06-15 20:01:40.092: I/XMPPClient(1300):Connected to 68.178.255.136 
06-15 20:01:41.952: I/connection.isAuthenticated() :(1300): true 
06-15 20:01:42.562: W/[create_user] Cannot create new user: XMPP Exception.(1300): 0 
06-15 20:01:42.562: W/System.err(1300): forbidden(403) 
06-15 20:01:42.562: W/System.err(1300):  at org.jivesoftware.smack.AccountManager.createAccount(AccountManager.java:246) 

Я был бы очень благодарен, если кто-то может предложить для этого рабочий стол.

ответ

3

Перейти к: навигация, поиск Файл в папке 0: 1 (0).

В файле сделать следующие изменения:

%% Put this in the section ACCESS RULES 
{access, register_from, [{allow, admin}]}. 

%% Change mod_register so it contains the new access rule: 

{mod_register, [ 
      {access_from, register_from}, 
      ... 
        ] ... 
+0

@kramk вы попробовали мой ответ. –

+1

Спасибо, osama mohammed saikh Я сделал две вещи 1. отредактируйте файл .cfg, как вы писали 2. HashMap attr = new HashMap (); \t attr.put («пользователь», пользователь); \t attr.put («пароль», пароль); \t try { \t manager.createAccount (пользователь, pass, attr); ....... Теперь его работа. – Deven

3

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

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

Огромное спасибо. Ты спас мой день :) –

0

В моем случае, мне нужно отредактировать файл EJABERD_HOME/CONF/ejabberd.yml, на изменения параметров mod_register к:

ip_access : all 

access_from : all 

access: register 

Чтобы разрешить пользователям регистрироваться с другого хоста

+0

говорю плохой формат. –