PubNub开启withPresence订阅通道返回403错误问题咨询
问题产生原因
PubNub的Presence(在线状态)能力依赖独立的系统通道实现:当调用订阅接口传入withPresence: true参数时,SDK除了订阅你指定的业务通道,还会自动订阅命名规则为[原通道名]-pnpres的Presence专用通道。
你当前的Access Manager权限配置仅为业务通道ch.123.456授予了read权限,未给对应的Presence通道ch.123.456-pnpres配置读权限,Access Manager校验Presence通道的订阅权限时判定无权限,因此返回403错误,返回的错误payload里也明确标注了无访问权限的资源就是ch.123.456-pnpres。
解决方法
- 若需要使用Presence在线状态能力:修改Access Manager授权规则,在channels资源列表中额外为
ch.123.456-pnpres授予read权限,调整后的权限配置参考:
{ "resources": { "channels": { "ch.123.456": { "read": true }, "ch.123.456-pnpres": { "read": true } } } }
- 若不需要使用Presence在线状态能力:删除订阅参数中的
withPresence: true配置,SDK将仅订阅业务通道ch.123.456,现有权限配置即可正常通过校验。 - 修正代码笔误:你提供的订阅代码中
subscribe方法拼写错误(写为subsribe,漏写字母c),即使权限配置正确也会触发调用异常,修正后的正确调用代码为:
pubnub.subscribe({channels: ['ch.123.456'], withPresence: true})
内容的提问来源于stack exchange,提问作者Slobodan Djordjevic
相关产品推荐
相关产品推荐

