Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

`jwtPayload.video` returns null grants for tokens from LiveKit server SDKs

オープン 初心者向け
#1,236 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@RaphaelFakhri がすでに取り組んでいます。

2026年10月10日 から。

  • #1237 @RaphaelFakhri による — オープン

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
76/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
dart, flutter

調査の方向性

lib/src/token_source/jwt.dart の LiveKitVideoGrant から始めて、フィールドのマッピングを issue で説明されている camelCase のキーと比較します。既存の JWT ペイロードのテストと、すでに roomJoin を含むトークンを作成している caching_token_source_test.dart を確認します。camelCase の権限キーを含むトークンが null ではなく期待される値を返せば完了です。

索引モデルが issue の本文から書いたものです。

説明

Describe the bug

TokenSourceResponse.jwtPayload?.video returns a LiveKitVideoGrant whose fields are all null except room, hidden and recorder, even when the token grants them. For example, video.roomJoin and video.canPublish are null for a token that has roomJoin: true and canPublish: true.

Root cause

LiveKitVideoGrant in lib/src/token_source/jwt.dart maps its fields to snake_case keys (room_join, can_publish, can_publish_sources, and so on). LiveKit tokens use camelCase keys in the video claim:

  • livekit/protocol auth/grants.go: json:"roomJoin", json:"canPublish", json:"canPublishSources".
  • livekit-server-sdk (Node): VideoGrant.roomJoin, VideoGrant.canPublish, serialized as-is.
  • The Android SDK VideoGrants reads roomJoin and canPublish.

The existing test builds its token with snake_case keys, so it passes, while caching_token_source_test.dart in the same package builds tokens with roomJoin.

To reproduce
final token = JWT({
  'sub': 'alice',
  'video': {'room': 'demo', 'roomJoin': true, 'canPublish': true},
}).sign(SecretKey('secret'));
final response = TokenSourceResponse(serverUrl: 'wss://example.livekit.cloud', participantToken: token);
print(response.jwtPayload?.video?.roomJoin);   // null
print(response.jwtPayload?.video?.canPublish); // null

Expected: true and true.
Actual: null and null.

Environment
  • livekit_client main (2.13.1)
主要言語
Dart
スター
421
フォーク
260
平均マージ
2日 5時間
マージ済み PR(30日)
17

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

livekit/client-sdk-flutter のほかの issue

livekit/client-sdk-flutter の issue をすべて見る

似ている issue

Dart の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。