萬用字元通道組管理授權 - 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
        }
    });

從此處開始,你的伺服器就可以在應用建立的任何頻道組中新增/刪除頻道。