Я использую asmack XMPP с кодом Android. Я просто регистрирую сервер XMPP, но проблема возникает, когда я пытаюсь создать нового пользователя. Чего я хочу достичь:Создание пользователя, получение недопустимого (406)
- Войти с администратором.
- Создайте нового пользователя.
- Выход из системы администратора.
- Войти как новый трепетающий пользователь.
- Сделайте несколько действий - сыграйте в игру.
- Удалить нового созданного пользователя.
Это позволяет игрокам не регистрироваться, так как регистрация обрабатывается автоматически, а также позволяет пользователям выбирать, какое имя по-прежнему доступно в текущее время.
текущий код выглядит следующим образом:
public void create_user(String username, String password) {
try {
connection.login("user", "pass");
} catch (XMPPException e) {
e.printStackTrace();
}
if (connection.isAuthenticated()) {
AccountManager manager = connection.getAccountManager();
try {
manager.createAccount(username, password);
} 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();
}
}
}
Войти часть кода успешен. Вторая часть кода - нет. Я получаю следующую ошибку:
W/[create_user] Cannot create new user: XMPP Exception.(1525): 0
W/System.err(1525): not-acceptable(406)
W/System.err(1525): at org.jivesoftware.smack.AccountManager.createAccount(AccountManager.java:246)
W/System.err(1525): at org.jivesoftware.smack.AccountManager.createAccount(AccountManager.java:207)
W/System.err(1525): at company.games.boxer.XMPPManager.create_user(XMPPManager.java:81)
W/System.err(1525): at company.games.boxer.XMPPManager.xmpp_login(XMPPManager.java:113)
W/System.err(1525): at company.games.boxer.XMPPClient.onCreate(XMPPClient.java:19)
W/System.err(1525): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
W/System.err(1525): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
W/System.err(1525): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
W/System.err(1525): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
W/System.err(1525): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
W/System.err(1525): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err(1525): at android.os.Looper.loop(Looper.java:123)
W/System.err(1525): at android.app.ActivityThread.main(ActivityThread.java:4627)
W/System.err(1525): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(1525): at java.lang.reflect.Method.invoke(Method.java:521)
W/System.err(1525): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
W/System.err(1525): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
W/System.err(1525): at dalvik.system.NativeStart.main(Native Method)
Может кто-нибудь сказать мне, почему? У меня есть достаточные разрешения для создания пользователей, поскольку я регистрируюсь как пользователь: pass (который является администратором сервера XMPP).
* ahem * ... ах ... вы не планируете * присылать * этот код с именем пользователя и паролем администратора * в 'apk', вы ...? – BRFennPocock
Рад, что я мог бы помочь, и, как говорит BRPocock, вы должны попросить сервер либо отправить имя пользователя/пароль, с которым вы можете войти, либо перенести регистрацию на сервер, и позволить ему вернуть учетные данные для текущего пользователя, а не введя пароль администратора в код. – Jave