This is my C# code, I use a NuGet package called JWT, I found it easier to use than the built in
private string GetAuthToken()
{
var payload = new Dictionary<string, object>
{
{ "exp", GetEpoch() + 80 },
{ "opaque_user_id", $"all" },
{ "user_id", "all" },
{ "channel_id", "all" },
{ "role", "broadcaster"},
};
IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
IJsonSerializer serializer = new JsonNetSerializer();
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
var token = encoder.Encode(payload, Convert.FromBase64String(_extension.Secret));
return token;
}
private int GetEpoch()
{
TimeSpan t = DateTime.UtcNow - new DateTime(1970, 1, 1);
int secondsSinceEpoch = (int)t.TotalSeconds;
return secondsSinceEpoch;
}