Мил*_*лан 5 android xmpp ejabberd asmack
StackOverflow的好人,请帮忙.我在我的ubuntu机器上设置了一个ejabberd服务器,添加了虚拟主机,设置了{access,register,[{allow,all}]}.并注册了一个管理员帐户.我不是linux大师,但我已经设法做了这个基本的设置.现在,从我的Win 7机器,使用Pidgin,我可以以管理员身份登录并可以访问许多管理功能.最重要的是我可以在服务器上创建新用户.问题是我不能用我的Android客户端使用asmack库来做到这一点.我可以建立连接和登录,但是当我尝试通过客户经理或通过发送IQ数据包注册新用户时,我得到禁止(403)响应错误.
AccountManager am = new AccountManager(connection);
Map<String, String> attributes = new HashMap<String, String>();
attributes.put("username", "my_user_name");
attributes.put("password", "my_password");
attributes.put("email", "foo@foo.com");
attributes.put("name", "my_full_name");
am.createAccount("my_user_name", "my_password", attributes);
Registration reg = new Registration();
reg.setType(IQ.Type.SET);
reg.setTo(connection.getServiceName());
// attributes.put("username", username);
// attributes.put("password", password);
// reg.setAttributes(attributes);
reg.addAttribute("username", username);
reg.addAttribute("password", password);
reg.addAttribute("email", email);
reg.addAttribute("name", fullName);
PacketFilter filter = new AndFilter(new PacketIDFilter(
reg.getPacketID()), new PacketTypeFilter(IQ.class));
PacketCollector collector = connection.createPacketCollector(filter);
connection.sendPacket(reg);
Run Code Online (Sandbox Code Playgroud)
有没有人有类似的问题或者可以告诉我我做错了什么?
谢谢
这是我的LogCat
10-10 10:00:26.249: DEBUG/StatusBarPolicy(1639): [BRIGHTHY] curNetwork=22003 curHPLMN=22003
10-10 10:00:26.839: INFO/System.out(21277): 10:00:26 AM SENT (1080244736): <iq id="fMJxx-4" to="morena.local" type="get"><query xmlns="jabber:iq:register"></query></iq>
10-10 10:00:26.869: INFO/System.out(21277): 10:00:26 AM RCV (1080244736): <iq from='morena.local' to='admin@morena.local/Smack' id='fMJxx-4' type='result'><query xmlns='jabber:iq:register'><instructions>Choose a username and password to register with this server</instructions><username>admin</username><password/><registered/></query></iq>
10-10 10:00:26.959: INFO/System.out(21277): 10:00:26 AM SENT (1080244736): <iq id="fMJxx-5" to="morena.local" type="set"><query xmlns="jabber:iq:register"><password>new_user</password><username>new_user@morena.local</username></query></iq>
10-10 10:00:26.969: INFO/System.out(21277): 10:00:26 AM RCV (1080244736): <iq from='morena.local' to='admin@morena.local/Smack' id='fMJxx-5' type='error'><query xmlns='jabber:iq:register'><password>new_user</password><username>new_user@morena.local</username></query><error code='403' type='auth'><forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>
10-10 10:00:31.659: WARN/System.err(21277): forbidden(403)
10-10 10:00:31.659: WARN/System.err(21277): at org.jivesoftware.smack.AccountManager.createAccount(AccountManager.java:246)
10-10 10:00:31.659: WARN/System.err(21277): at org.jivesoftware.smack.AccountManager.createAccount(AccountManager.java:207)
10-10 10:00:31.659: WARN/System.err(21277): at org.me.my_project.FriendProfileActivity.connectToServer(FriendProfileActivity.java:698)
10-10 10:00:31.659: WARN/System.err(21277): at org.me.my_project.FriendProfileActivity.connectLogin(FriendProfileActivity.java:578)
10-10 10:00:31.659: WARN/System.err(21277): at org.me.my_project.FriendProfileActivity$2.run(FriendProfileActivity.java:433)
10-10 10:00:31.659: INFO/System.out(21277): 10:00:31 AM SENT (1080244736): <iq id="fMJxx-6" to="morena.local" type="get"><query xmlns="jabber:iq:register"></query></iq>
10-10 10:00:31.679: INFO/System.out(21277): 10:00:31 AM RCV (1080244736): <iq from='morena.local' to='admin@morena.local/Smack' id='fMJxx-6' type='result'><query xmlns='jabber:iq:register'><instructions>Choose a username and password to register with this server</instructions><username>admin</username><password/><registered/></query></iq>
10-10 10:00:31.689: INFO/System.out(21277): 10:00:31 AM SENT (1080244736): <iq id="fMJxx-7" to="morena.local" type="set"><query xmlns="jabber:iq:register"><email>some@some.com</email><password>new_user1</password><username>new_user1@morena.local</username><name>new_user1@MORENA.LOCAL</name></query></iq>
10-10 10:00:31.699: INFO/System.out(21277): 10:00:31 AM RCV (1080244736): <iq from='morena.local' to='admin@morena.local/Smack' id='fMJxx-7' type='error'><query xmlns='jabber:iq:register'><email>some@some.com</email><password>new_user1</password><username>new_user1@morena.local</username><name>new_user1@MORENA.LOCAL</name></query><error code='403' type='auth'><forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>
10-10 10:00:31.729: WARN/System.err(21277): forbidden(403)
10-10 10:00:31.729: WARN/System.err(21277): at org.me.my_project.utilities.CreateChatAccount.createAccount(CreateChatAccount.java:100)
10-10 10:00:31.729: WARN/System.err(21277): at org.me.my_project.utilities.CreateChatAccount.createAccount(CreateChatAccount.java:143)
10-10 10:00:31.729: WARN/System.err(21277): at org.me.my_project.FriendProfileActivity.connectToServer(FriendProfileActivity.java:706)
10-10 10:00:31.729: WARN/System.err(21277): at org.me.my_project.FriendProfileActivity.connectLogin(FriendProfileActivity.java:578)
10-10 10:00:31.729: WARN/System.err(21277): at org.me.my_project.FriendProfileActivity$2.run(FriendProfileActivity.java:433)
Run Code Online (Sandbox Code Playgroud)
我找到了!问题在于服务器配置(但我仍然不明白为什么我可以在此更改之前从Pidgin注册新用户).设置
%% In-band registration
{access, register, [{allow, all}]}.
Run Code Online (Sandbox Code Playgroud)
似乎不适用于新版本的ejabberd.你需要添加
{mod_register, [
{access_from, register},
...
] ...
Run Code Online (Sandbox Code Playgroud)
如果您想允许所有用户注册.如果您只希望管理员拥有此访问权限,则需要添加新的访问规则
{access, register_from, [{allow, admin}]}.
Run Code Online (Sandbox Code Playgroud)
和
{mod_register, [
{access_from, register_from},
...
] ...
Run Code Online (Sandbox Code Playgroud)
为我这个代码注册一个新帐户:
try
{
connection.connect ();
Log.i (TAG, "Connect");
mAccount = new AccountManager (connection);
if (mAccount.supportsAccountCreation ())
{
mAccount.createAccount ("user", "pass");
}
Run Code Online (Sandbox Code Playgroud)
使用以下设置ejabberd:
{access,register,[{allow,all}]}.
这是一个非常安全的设置,因为它可以在服务器上没有我们经过身份验证的帐户进行记录(方法支持.AccountCreation()返回true).
| 归档时间: |
|
| 查看次数: |
11057 次 |
| 最近记录: |