2016-04-18 10 views
1

Ich habe ejabberd auf meinem lokalen Server installiert. Dies wurde dann in Funken für seine Funktionalität getestet und es hat gut funktioniert. Jetzt möchte ich einen neuen Benutzer über die Android-App hinzufügen.Hinzufügen neuer Benutzer zu Ejabberd durch Smack android API

Ich habe versucht, einen neuen Benutzer durch Funken hinzufügen und es hat gut funktioniert. Die Felder, die ich angegeben habe, sind uesrname, password, confirm password, server. Aber wenn ich versuchte, es zu tun, um die smack api in dem Android-App gab es die folgenden Fehler:

org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: forbidden - auth 

I createAccount() wurde mit, in dem Code gesehen, die ich unten wurde mit, das neue Konto in Klaps zu erstellen.

AccountManager accountManager = AccountManager.getInstance(conn1); 

try { 
    accountManager.createAccount("tryuser", "qwerty"); 
    Log.i("log", "created user successfully"); 
} catch (SmackException.NoResponseException e) { 
    e.printStackTrace(); 
} catch (XMPPException.XMPPErrorException e) { 
    e.printStackTrace(); 
} catch (SmackException.NotConnectedException e) { 
    e.printStackTrace(); 
} 

ich überprüft haben, wenn sie von supportsAccountCreation() neue Kontoerstellung unterstützt und es kehrte true.

Ich habe meine register Regel auf allow all in Ejabberd Server geändert. und ich denke nicht, dass es irgendein problem hat, weil ich konto von spark erstellen kann, aber fehler in smack bekommen.

Ich habe die folgenden SO Fragen zu diesem Thema untersucht, aber kein Glück.

Hat jemand irgendwelche Vorschläge, wie dieses Problem zu lösen?

+0

Sie können Benutzer direkt durch Einfügen von Datensatz in der Datenbank erstellen. Erstellen Sie Webservice und senden Sie die Benutzerdaten an den Server. Ich habe das vor langer Zeit mit offenem Feuer gemacht. –

+0

hey @DevendraSingh bitte geben Sie ein Beispiel dafür. –

+0

Ich möchte keinen Webservice machen. Es sollte von meiner App aus kein Webview sein. –

Antwort

1

Bitte geben einen Versuch mit unter -

AccountManager accountManager = AccountManager.getInstance(connection); 
       try { 
        if (accountManager.supportsAccountCreation()) { 
         accountManager.sensitiveOperationOverInsecureConnection(true); 
         accountManager.createAccount("userName", "password"); 

        } 
       } catch (SmackException.NoResponseException e) { 
        e.printStackTrace(); 
       } catch (XMPPException.XMPPErrorException e) { 
        e.printStackTrace(); 
       } catch (SmackException.NotConnectedException e) { 
        e.printStackTrace(); 
       } 

Und Sie müssen auch unten in ejabberd.cfg (config-Datei)

{access, register, [{allow, all}]}. 

was bedeutet, setzen - In-Band-Registrierung ermöglicht die Registrierung von Jeder mögliche Benutzername. Um die In-Band-Registrierung zu deaktivieren, ersetzen Sie "allow" durch "deny".

Und in mod_register (Modul in gleicher Konfigurationsdatei) bitte unten gesetzt -

{access_from, register} 

& vor, dass Sie überprüfen Sie XMPP-Server verbunden sind.

Wahrscheinlich wird dies Ihr Problem lösen.

+0

Ja, ich werde es versuchen und Sie wissen lassen. –

+0

bitte vergessen Sie nicht zu antworten, wenn es funktioniert. Vielen Dank –