通配符通道组管理授权 - Java SDK v4

在通道组中添加/删除频道时,你必须拥有这些频道组的 manage 权限。但是你永远不应该允许客户获得他们将订阅的频道组的权限。如果他们这样做,那么他们可以将他们想要的任何频道添加到他们的频道组,并立即拥有对该频道的读取权限。

因此,这就是你的服务器必须是唯一拥有 manage 权限的实体的原因。但是,你的服务器需要为每个通道组拥有 manage 权限,以便它可以代表所有客户端向/从通道组添加/删除通道。

但是,向每个频道组授予 manage 可能有点单调乏味。相反,你可以在一个通配符授权中将 manage 授予所有通道组(现有和将要创建)。

// init PubNub instance using PNConfiguration with the secret-key
PNConfiguration pnConfiguration = new PNConfiguration();
pnConfiguration.setSubscribeKey("my_subkey")
pnConfiguration.setPublishKey("my_pubkey");
// secret key allows server to `grant` permissions
pnConfiguration.setSecretKey("my_secretkey");
pnConfiguration.setSecure(true);
// set the the server's auth key
pnConfiguration.setAuthKey("server_authkey");
PubNub pubnub = new PubNub(pnConfiguration);

// grant read and manage using the channel group wildcard - ":" 
// with forever ttl (0) 
pubNub.grant()
    .channelGroups(Arrays.asList(":")) // colon (:) is channel group wildcard
    .manage(true) // add/remove channels to/from channel groups
    .read(true) // in case server needs to subscribe or do here-now on channel groups
    .ttl(0) // 0 = forever grant
    .async(new PNCallback<PNAccessManagerGrantResult>() {
        @Override
        public void onResponse(PNAccessManagerGrantResult result, PNStatus status) {
            // check status for success or failure of grant
        }
    });

从此处开始,你的服务器就可以在应用创建的任何频道组中添加/删除频道。