您至少需要自己成为会员才能访问从属关系列表。您当前是否是居住者(即在房间内)并不重要。
请注意,从属关系(例如“成员”)是需要明确提供给人员的持久设置,否则默认为“无”。在普通的无限制房间中,这个设置除了允许您检索成员列表之外没有任何其他效果。成员列表与占用者列表无关。
(如果您只想知道当前房间里的人,您应该发送一个带有命名空间的查询,http://jabber.org/protocol/disco#items
而不是muc#admin
.)
示例(刚刚在我的 ejabberd 服务器上尝试过)。尝试使用非关联帐户查询列表:
<iq from='crone1@shakespeare.lit/desktop'
id='member3'
to='coven@chat.shakespeare.lit'
type='get'>
<query xmlns='http://jabber.org/protocol/muc#admin'>
<item affiliation='member'/>
</query>
</iq>
<iq from='coven@chat.shakespeare.lit'
to='crone1@shakespeare.lit/desktop'
type='error'
id='member3'>
<query xmlns='http://jabber.org/protocol/muc#admin'>
<item affiliation='member'/>
</query>
<error code='403' type='auth'>
<forbidden/>
<text>Administrator privileges required</text>
</error>
</iq>
使用特权(房间所有者)帐户授予该第一个帐户成员特权:
<iq from='admin@shakespeare.lit/desktop'
type='set'
to='coven@chat.shakespeare.lit'
id='member4'>
<query xmlns='http://jabber.org/protocol/muc#admin'>
<item jid='crone1@shakespeare.lit' affiliation='member'/>
</query>
</iq>
<iq to='admin@shakespeare.lit/desktop'
from='coven@chat.shakespeare.lit'
type='result' id='member4'/>
再试一次:
<iq from='crone1@shakespeare.lit/desktop'
type='get'
to='coven@chat.shakespeare.lit'
id='member5'>
<query xmlns='http://jabber.org/protocol/muc#admin'>
<item affiliation='member'/>
</query>
</iq>
<iq to='crone1@shakespeare.lit/desktop'
from='coven@chat.shakespeare.lit'
type='result'
id='member5'>
<query xmlns='http://jabber.org/protocol/muc#admin'>
<item jid='crone1@shakespeare.lit' affiliation='member'/>
</query>
</iq>