100ms-docs icon indicating copy to clipboard operation
100ms-docs copied to clipboard

Add Go Sample code for App and Management token generation

Open Mupati opened this issue 1 year ago • 2 comments
trafficstars

To help the Golang users, add sample code for token generation as we have for the other languages over here

Mupati avatar Nov 30 '23 17:11 Mupati

And for Deno(Supabase Edge Function) please. I try, but error Error: Failed to create room: Unauthorized

error Error: Failed to create room: Unauthorized
   at Object.handler (file:///home/deno/functions/create-room/index.ts:83:13)
   at eventLoopTick (ext:core/01_core.js:183:11)
   at async handleHttp (ext:sb_core_main_js/js/http.js:93:17)
import {
  create,
  getNumericDate,
  Header,
  Payload,
} from "https://deno.land/x/djwt/mod.ts";

const access_key = Deno.env.get("APP_ACCESS_KEY");
const app_secret = Deno.env.get("APP_SECRET");

const payload: Payload = {
  access_key: access_key,
  type: "management",
  version: 2,
  iat: getNumericDate(Math.floor(Date.now() / 1000)),
  nbf: getNumericDate(Math.floor(Date.now() / 1000)),
  exp: getNumericDate(60 * 60 * 24), // 24 hours from now
};

const header: Header = {
  alg: "HS256",
  typ: "JWT",
};


const cryptoKey = await crypto.subtle.importKey(
  "raw",
  new TextEncoder().encode(app_secret),
  { name: "HMAC", hash: { name: "SHA-256" } },
  false,
  ["sign"],
);

let token;
  try {
    if (!app_secret) {
      throw new Error("Secret not found");
    }
    token = await create(header, payload, cryptoKey);
  } catch (err) {
    console.error(err);
  }

gHashTag avatar Mar 23 '24 18:03 gHashTag

And for Deno(Supabase Edge Function) please. I try, but error Error: Failed to create room: Unauthorized

error Error: Failed to create room: Unauthorized
   at Object.handler (file:///home/deno/functions/create-room/index.ts:83:13)
   at eventLoopTick (ext:core/01_core.js:183:11)
   at async handleHttp (ext:sb_core_main_js/js/http.js:93:17)
import {
  create,
  getNumericDate,
  Header,
  Payload,
} from "https://deno.land/x/djwt/mod.ts";

const access_key = Deno.env.get("APP_ACCESS_KEY");
const app_secret = Deno.env.get("APP_SECRET");

const payload: Payload = {
  access_key: access_key,
  type: "management",
  version: 2,
  iat: getNumericDate(Math.floor(Date.now() / 1000)),
  nbf: getNumericDate(Math.floor(Date.now() / 1000)),
  exp: getNumericDate(60 * 60 * 24), // 24 hours from now
};

const header: Header = {
  alg: "HS256",
  typ: "JWT",
};


const cryptoKey = await crypto.subtle.importKey(
  "raw",
  new TextEncoder().encode(app_secret),
  { name: "HMAC", hash: { name: "SHA-256" } },
  false,
  ["sign"],
);
let token;
  try {
    if (!app_secret) {
      throw new Error("Secret not found");
    }
    token = await create(header, payload, cryptoKey);
  } catch (err) {
    console.error(err);
  }

I'm not sure your comment belongs under this issue

Mupati avatar Mar 23 '24 21:03 Mupati