gpt4 book ai didi

java - aSmack muc.getMembers() 禁止 (403) OPENFIRE

转载 作者:行者123 更新时间:2023-11-29 21:40:22 25 4
gpt4 key购买 nike

我想允许任何聊天室成员获得所有成员的列表。目前,只有主持人用户可以这样做。我似乎无法找到我需要在哪里设置/更改用户权限以允许这样做。

如果以主持人身份登录,则以下代码有效:

 try {
Collection<Affiliate> members = muc.getMembers();
System.out.println(members.size());
} catch(XMPPException e) {
e.printStackTrace();
}

如果以普通成员(member)身份登录,上述代码会抛出一个 Forbidden 403 错误。

 06-25 19:53:51.198: W/System.err(12943): forbidden(403)
06-25 19:53:51.208: W/System.err(12943): at org.jivesoftware.smackx.muc.MultiUserChat.getAffiliatesByAdmin(MultiUserChat.java:1743)
06-25 19:53:51.208: W/System.err(12943): at org.jivesoftware.smackx.muc.MultiUserChat.getMembers(MultiUserChat.java:1657)

如有任何建议,我们将不胜感激。

最佳答案

两个建议:

1) 确保与用于实例化 MulitUserChat 实例 (muc) 的 session 关联的用户具有足够的房间权限来获取成员列表(我认为,但我不确定,用户需要房间的管理员权限)

2) 如果 1 已得到充分处理,请确保您正在调用 SmackAndroid.init(Context context)

希望这对您有所帮助!

-- 关于你最后的评论--

对于忘记原来的问题,我深表歉意。你是对的,这两个功能只能由管理员用户调用。没有管理员用户的同意,没有办法(据我所知)让成员获得管理员权限。经过更多考虑后,我得出结论,无论如何,这是一个糟糕的解决方案,因为向所有用户授予管理员权限会损害聊天室的安全性。幸运的是,有一个更好的解决方案(涉及更多):

您可以创建一个使用 botz 库 ( http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html ) 的插件 ( http://community.igniterealtime.org/docs/DOC-1130#comment-5601 )。创建 muc 房间后,授予机器人对房间的管理员权限。当用户需要下拉成员列表时,用户应该将查询发送给机器人,机器人应该查询房间并将结果转发给用户。这种设计可以保护您房间的安全,除了有趣之外,botz 的用途还不止于此。 -- 希望对您有所帮助

关于java - aSmack muc.getMembers() 禁止 (403) OPENFIRE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17305306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com