From 048b4f6ee91517b51662ec38b6bc817b22877643 Mon Sep 17 00:00:00 2001 From: Mateusz Wiktor Date: Fri, 23 Oct 2026 11:33:24 +0200 Subject: [PATCH] docs: add snippets for Access Manager categories Co-Authored-By: Claude Sonnet 5.5 --- .../AccessManager/AccessManagerSample.cs | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/PubNubUnity/Assets/Snippets/AccessManager/AccessManagerSample.cs b/PubNubUnity/Assets/Snippets/AccessManager/AccessManagerSample.cs index 07c4cc8c..49a53009 100644 --- a/PubNubUnity/Assets/Snippets/AccessManager/AccessManagerSample.cs +++ b/PubNubUnity/Assets/Snippets/AccessManager/AccessManagerSample.cs @@ -137,6 +137,34 @@ static async Task GrantTokenComplexWithRegex() // snippet.end } + static async Task GrantTokenCategories() + { + // snippet.grant_token_categories + // WARNING: GrantToken requires the SecretKey and must ONLY be called from a secure, server-side application. Never ship token-granting logic in a client app. + PNResult grantTokenResponse = await pubnub.GrantToken() + .TTL(15) + .AuthorizedUuid("my-authorized-uuid") + .Categories(new PNTokenCategories() + { + // allow listing all channel metadata + Channels = new PNTokenCategoryPermissions() { Get = true }, + // allow listing all uuid metadata + Uuids = new PNTokenCategoryPermissions() { Get = true } + }) + .ExecuteAsync(); + PNAccessManagerTokenResult grantTokenResult = grantTokenResponse.Result; + PNStatus grantTokenStatus = grantTokenResponse.Status; + if (!grantTokenStatus.Error && grantTokenResult != null) + { + Debug.Log(pubnub.JsonPluggableLibrary.SerializeToJsonString(grantTokenResult)); + } + else + { + Debug.Log(pubnub.JsonPluggableLibrary.SerializeToJsonString(grantTokenStatus)); + } + // snippet.end + } + static async Task GrantTokenOldBasicUsage() { // snippet.basic_usage_old @@ -379,6 +407,20 @@ static async Task ParseTokenBasicUsage() */ } + static void ParseTokenCategories() + { + // snippet.parse_token_categories + PNTokenContent parsedTokenContent = + pubnub.ParseToken( + "p0thisAkFl043rhDdHRsCkNyZXisRGNoYW6hanNlY3JldAFDZ3Jwsample3KgQ3NwY6BDcGF0pERjaGFuoENnctokenVzcqBDc3BjoERtZXRhoENzaWdYIGOAeTyWGJI"); + + // category permissions are decoded from the "cat" section of the token + bool canListChannelMetadata = parsedTokenContent.Categories.Channels.Get; + bool canListUuidMetadata = parsedTokenContent.Categories.Uuids.Get; + Debug.Log($"Channels get: {canListChannelMetadata}, uuids get: {canListUuidMetadata}"); + // snippet.end + } + static async Task GrantTokenDataSync() { // snippet.grant_token_datasync