方法:認証
方法:認証
はじめに
このガイドでは、Frame.io プロジェクトでの Camera to Cloud(C2C)デバイスの認証と認証プロセスを説明します。標準的な手動コード入力方法と、最適なユーザーエクスペリエンスのための拡張 QR コードペアリングアプローチの両方を説明します。
何が必要ですか?
まだの場合は、実装を開始する前にガイドをレビューしてください。統合を識別するために、チームからclient_secretを受け取っているはずです。そうでない場合は、C2C エコシステムのこの紹介を参照し、チームにお問い合わせください。
URL と QR コードペアリングの前提条件
URL と QR コードペアリングを実装するには、これらの要件を満たすことを確認してください:
- デバイスの互換性:ペアリングプロセス中にデバイスが URL/QR コード生成をサポートしていることを確認してください。
認証フローの説明
ユーザーの視点から認証フローを理解するには、これらのリソースを参照してください:
- 新しいデバイスを追加するためのサポートアーティクル。
- Teradek Cube を認証するためのトレーニング動画。
この認証プロセスは実装要件を最小限に抑えます。次のことを行う必要はありません:
- web ブラウザーへのリダイレクト(URL コードペアリングを使用している場合を除く)
- Frame.io ユーザー認証の処理
- アカウント/プロジェクト選択インターフェイスの提示
- 基本的な情報表示を超えた複雑な UI コンポーネントの開発
URL コードペアリングによるユーザーエクスペリエンスの向上
現代のユーザーは効率的なデバイスインタラクションを期待します。現在の手動ペアリングプロセスは適切に機能しますが、最適化できます。
Netflix や Disney+ などのストリーミングサービスと同様に、URL と QR コードペアリングを実装することで、プロセスを大幅に合理化し、入力エラーを最小限に抑え、ペアリング時間を短縮できます。
デバイス識別子(client_id)
各物理デバイスには、ユーザーのプロジェクト内での接続トラッキングのための固有の識別子が必要です。
デバイスの場合、この識別子はclient_idであり、認証時に不可欠です。実装時には、デバイスのシリアル番号、UUID、またはその他の固有の文字列など、適切な識別子ソースを検討してください。Appleデバイスで統合を行う場合は、デバイスの再起動時でも一貫した固有の永続的UUIDを使用することをお勧めします。個人識別情報については注意してください。ユーザーのメールアドレスは適切なclient_id値ではありません。
さらに、識別子を制御できることを確認してください。デバイスのMACアドレスは、ソフトウェアが所有していず、個人識別情報となる可能性があるため不適切です。
適切な識別子の選択についてガイダンスが必要な場合は、統合を簡素化する適切な値の決定について、チームがサポートします。
ステップ1:デバイスコードのリクエスト
/v2/auth/device/codeエンドポイントを通じてデバイスコードをリクエストすることで実装を開始します:
従来のペアリング方法
URLコードペアリングの有効化
URLコードペアリングの場合は、追加のヘッダーでAPI呼び出しを変更してください:
**注意:**これらの認証エンドポイントは、JSONではなく、フォームデータのみを受け入れます。認証後、他のエンドポイントはJSONペイロードを受け入れますが、認証エンドポイントはJSONリクエストを拒否します。
ペイロードパラメーター
-
client_id:物理デバイスの固有識別子。これは、シリアル番号やUUIDなど、固有であることが保証されている必要があります。
-
client_secret:Frame.ioサポートによって提供され、デバイスモデルを識別するために使用されます。この機密値はユーザーから保護され、保存時には暗号化されている必要があります。
-
scope:スペースで区切られた要求された権限。デバイスは以下をリクエストできます:
-
asset_create:アセットの作成とアップロードを可能にします。*offline:リフレッシュトークンによる認証の更新を許可します。この範囲がないと、認証トークンが8時間で期限切れになるため、ユーザーは8時間ごとにデバイスを再認証する必要があります。
実際の実装では、デバイスは通常両方の範囲を要求します。
API 応答の理解
このリクエストは次のような応答を生成します:
従来のペアリング応答
URL ペアリング応答
応答の分類
- device_code:この内部識別子はユーザーから非表示にしておく必要があり、投票中に認証リクエストを識別します。
- expires_in:コードの有効期間(秒単位)。
- interval:推奨される投票間隔(秒単位)。
- name:接続するデバイスの識別子。
- user_code:デバイスペアリングのためにFrame.ioに手動入力する6桁のコード。
- verification_uri:QRスキャンができない場合の手動入力用のベースURL。
- verification_uri_complete:ペアリングコードを含む完全なURL。モバイルアプリ内でのハイパーリンクやQRコード生成に使用し、ユーザーをペアリングインターフェイスへスムーズにナビゲートします。
ユーザーへのQRコード表示
verification_uri_completeを使用して、ユーザーがスキャンできるようにデバイス画面にQRコードを生成・表示し、効率的なペアリングを促進します。
例:QRコードが表示されたデバイス画面
<img alt=“デバイスQRコードペアリング画面の例” src=“file:docs/pages/c2c/static/images/qr_code_example.png”>常にフォールバックオプションを提供してください:QRスキャンができない場合の手動入力用にuser_codeとverification_uriを表示します。または、モバイルスキャン用の静的QRコードとしてverification_uriを表示することも検討してください。モバイルアプリ統合では、アプリを実行しているデバイスからはQRコードをスキャンできないため、verification_uri_completeをタップ可能なハイパーリンクとして含めてください。
ステップ2:ユーザー認証の投票
ペアリングコードまたはURLコードを提供した後、このリクエストでユーザーの入力を検証します:
ペイロードパラメータ
- client_id:ステップ 1 で使用したのと同じ識別子。
- device_code:以前に返された
device_code値。 - grant_type:OAuth 付与タイプ識別子。この実装では常に
urn:ietf:params:oauth:grant-type:device_code。
初回の調査試行では通常次が返されます:
この致命的でないエラーは、ユーザーがコード入力を完了していないことを示します。完了まで調査を続けます。
**iOS アプリデバイスに関するノーツ:**ユーザーがペアリングコードを入力するために Frame.io iOS アプリに切り替えると、アプリケーションが背景に移行する可能性があります。applicationDidBecomeActive などでアプリケーションが再びプライマリになったら、認証流量を継続できるよう調査を再開し、ユーザーにペアリングの再起動を求める必要がなくなります。
次を受信した場合:
ユーザー入力前にコードが期限切れになりました。ステップ 1 で新しいコード/QR コードを生成してユーザーに提示し、調査を再開します。
認証が成功すると次が生成されます:
Camera to Cloud デバイスの認証が正常に完了しました。おめでとうございます!
この応答を確認してみましょう:
- access_token:Frame.io バックエンドアクセスのための認証資格情報。今後の API 要求のヘッダーに必要です。
- expires_in:アクセストークンの有効期間(秒単位)。この期間後は更新が必要です。
- refresh_token:アクセストークン管理に使用。主に認証更新用ですが、取り消しにも適用されます。
- token_type:C2C API 実装では常に
bearer。アクションは不要です。
ステップをまとめる
デバイスコードの期限切れの可能性を処理しながら、これらの API 呼び出しを Python 風の疑似コードで実装してみましょう:
**ノーツ:**外側のループは、ペアリングコードが期限切れになり新しいコードが必要になる場合を処理します。
最後のステップとして、Frame.io からプロジェクト情報を取得して表示し、意図したプロジェクトへのペアリングが成功したことを確認します。これについては次のチュートリアルで説明します。
ペアリング用 QR コードの作成と表示
URL/QR コードペアリングを実装する場合、応答の verification_uri_complete 値から QR コードを生成する必要があります。人気のライブラリを使用した各プログラミング言語の例を以下に示します:
qrcodeを使用したPythonの例
JavaScript の例(webまたはElectron)
Androidの例(Java)
iOSの例(Swift)
QR コード表示のベストプラクティス
QR コードペアリングを実装する際は、最適なユーザーエクスペリエンスのために以下のガイドラインを検討してください:
-
最適なサイズ:信頼性のあるスキャンのため、QR コードは最低200〜250ピクセル四方で表示してください。
-
コントラスト:QR コードと背景の間に高いコントラストを確保してください(白背景に黒が理想的)。
-
エラー訂正:コードの密度と信頼性のバランスを取るため、中程度のエラー訂正レベル(LまたはM)を使用してください。
-
明確な指示:「デバイスをペアリングするには、スマートフォンのカメラでこのコードをスキャンしてください」など、コードのスキャン方法について明確なガイダンスを提供してください。
-
複数のオプション:フォールバックとして、QR コードと併せて手動ペアリングコードを常に提供してください:
-
モバイルアプリのハイパーリンク:統合がモバイルアプリケーションの場合、同一デバイスからQR コードをスキャンできないため、
verification_uri_completeをタップ可能なリンクとして含めてください。 -
テスト:信頼性のあるスキャンを確保するため、様々なデバイスと照明条件でQR コードをテストしてください。
<img alt=“QR コード表示の例” src=“file:docs/pages/c2c/static/images/qr_code_example.png”>
トラブルシューティング
問題が発生した場合は、以下の一般的なシナリオと解決策を参照してください:
-
「デバイスを接続」ボタンが表示されない:C2C管理パネルにアクセスする際、これは以下を示している可能性があります:
-
権限不足:権限メッセージが表示される場合は、アドビ担当営業または販売店に連絡して権限を調整するか、適切なロールを割り当ててもらってください。* 既存のデバイス接続:1つのデバイスを接続した後、メインの「新しいデバイスを追加」ボタンは、C2C接続パネルの右上隅にある3点メニューに置き換えられます。
-
無効なクライアントエラー:
invalid_client応答は、通常間違ったclient_secretによる、デバイス情報の不一致を示します。 -
不正なリクエストエラー:
bad_request応答は、不正な形式のリクエストデータを示します。フィールド名を確認し、すべての必須フィールドが含まれていることを確認してください。
問題がここで解決されない場合は、このトラブルシューティングセクションを改善できるよう、エクスペリエンスを共有してください。
次のステップ
チームへの連絡をお勧めします。認証管理ガイドに進んでください。フィードバックをお待ちしております!