2016-04-18 9 views
1

ローカルサーバーにejabberdをインストールしました。これは、その機能のためにスパークでテストされ、うまくいきました。今、私はアンドロイドアプリを通じて新しいユーザーを追加したいと思います。Smackでejabberdに新しいユーザーを追加するandroid api

sparkで新しいユーザーを追加しようとしましたが、うまくいきました。私が与えたフィールドはuesrname,password,confirm password,serverです。私はそれが次のエラーを与えたAndroidアプリでsmack apiを使用してそれを実行しようとしたとき、しかし:

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

私はピシャリで新しいアカウントを作成するには、以下の使用していたコードで見られ、createAccount()を使用していました。

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(); 
} 

それがsupportsAccountCreation()して、新しいアカウントの作成をサポートしている場合、私がチェックしていると、それはtrueを返しました。

私はregisterのルールをejabberdサーバーのallow allに変更しました。私はスパークからアカウントを作成することができるので、それは問題がないと思うが、打ち間違いを得る。

私はこのトピックに関連する次のような質問を見ましたが、運はありません。

誰もがこれを解決する方法上の任意の提案を持っていますか?

+0

データベースにレコードを挿入して直接ユーザーを作成することができます。 Webサービスを作成し、ユーザーデータをサーバーに送信します。私は長いことオープンファイアでこれをやっていた。 –

+0

ちょっと@DevendraSinghこれについていくつかの例を挙げてください。 –

+0

私はどんなWebサービスもしたくありません。それは私のアプリから任意のwebviewではありません。 –

答えて

1

以下で試してみてください -

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(); 
       } 

をそして、あなたはまた、ejabberd.cfgに下記(設定ファイル)を設定する必要があり

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

意味 - インバンド登録の登録ができます可能なユーザ名。帯域内登録を無効にするには、 'allow'を 'deny'に置き換えます。

そしてmod_registerで(同じ設定ファイル内のモジュール)以下に設定してください - それはあなたがXMPPサーバーに接続されている確認してください

{access_from, register} 

&前に。

これにより、問題が解決される可能性があります。

+0

はい、私はそれを試み、あなたに知らせます。 –

+0

それがうまくいくならば、upvoteの答えを忘れないでください。ありがとう –

関連する問題