トークンは、Intelligent Speech Interaction API へのリクエストを認証します。各リクエストには有効なトークンを含める必要があります。トークンは有効期限が切れるまで再利用でき、リクエストごとに新しいトークンを取得する必要はありません。このトピックでは、トークンの取得方法、有効期限の管理、および一般的な問題のトラブルシューティングについて説明します。
方法の選択
|
方法 |
ユースケース |
|
一時的なデバッグとテスト。 |
|
|
本番環境。アプリケーションは、AccessKey 認証情報を使用して SDK 経由でトークンを取得し、必要に応じて更新します。 |
|
|
プログラミング言語で利用できる SDK がない場合や、依存関係を直接管理する必要がある場合。アプリケーションでリクエストの署名と送信を実装します。 |
トークンの使用方法と有効期限
トークンの有効期限はどのように取得しますか?
SDK または OpenAPI のレスポンスに含まれる ExpireTime フィールドは、トークンの有効期限を秒単位の Unix タイムスタンプで示します。ミリ秒を受け入れる日付 API に渡す前に、この値に 1000 を乗算してください。アプリケーションで要求されるタイムゾーンを使用して時刻を表示します。
現在のトークンの有効期限が切れる前に、新しいトークンを取得してください。コンソールで取得するトークンは、一時的なデバッグを目的としています。本番環境では、SDK または OpenAPI を使用してトークンを取得し、ExpireTime に基づいて更新をスケジュールしてください。
有効期限のないトークンは取得できますか?
いいえ。トークンには有効期間が定められています。現在のトークンの有効期限が切れる前に、新しいトークンを取得してください。
新しいトークンを取得すると、既存のトークンは無効になりますか?
いいえ。新しいトークンを取得しても、既存のトークンが直ちに無効になるわけではありません。既存のトークンは、その有効期間内であれば引き続き使用できます。
複数のデバイスでトークンを共有できますか?
有効なトークンは、複数のデバイスで再利用および共有できます。各デバイスで使用される AppKey とトークンは、同じ Alibaba Cloud アカウントに属している必要があります。
よくある質問
音声サービスを呼び出すとエラー 40020105 が発生します。どうすれば解決できますか?
Meta:APPKEY_NOT_EXIST:Appkey not exist! は、AppKey が存在しないことを示します。AppKey の値を確認し、プロジェクトとトークンの取得に使用した AccessKey ペアが同じ Alibaba Cloud アカウントに属していることを確認してください。RAM ユーザーの AccessKey ペアを使用している場合、その RAM ユーザーはプロジェクトを所有するアカウントに属し、必要な NLS 権限を持っている必要があります。
Intelligent Speech Interaction コンソールの [All Projects] ページで [AppKey] カラムを確認してください。RAM コンソールで、AccessKey ペアを所有するアイデンティティとその権限を確認してください。
トークンが返されない、または null が返される場合はどうすればよいですか?
AccessKey ID と AccessKey シークレットを確認し、レスポンスに含まれるエラー情報を調べてください。
アカウントで Intelligent Speech Interaction が有効化されていることを確認してください。
RAM ユーザーを使用している場合は、そのユーザーにトークンを取得する権限があることを確認してください。
AliyunNLSSpeechServiceAccessにはnls:CreateTokenが含まれています。AliyunNLSFullAccessがすでに付与されている場合、この権限のための追加のポリシーは不要です。システムクロックを確認してください。クロックが不正確な場合、リクエストのタイムスタンプが実際の時刻と異なる可能性があります。
Intelligent Speech Interaction コンソールでサービスステータスを確認し、RAM コンソールで権限を管理してください。
承認手順については、「RAM ユーザー権限の管理」をご参照ください。
トークンが無効な場合、または音声リクエストで 403 が返された場合はどうすればよいですか?
レスポンスのエラーコードとメッセージを使用して、トークンが正しく入力されているか、有効期限が切れていないか、AppKey と同じアカウントに属しているかを確認してください。現在のトークンの有効期限が切れている場合は、新しいトークンを取得してください。
トークン取得時に "connect failed" または "Connection refused" が表示された場合の解決方法
トークンエンドポイント、DNS 名前解決、HTTPS ポートへの接続性、プロキシ設定、ファイアウォール設定を確認してください。ランタイム環境がエンドポイントにアクセスできることを確認してください。
不正確なクロックが原因で Postman または SDK のリクエストが失敗する場合はどうすればよいですか?
システムクロックを確認し、同期してください。OpenAPI の Timestamp パラメーターには、2026-09-28T08:00:00Z のような yyyy-MM-dd'T'HH:mm:ss'Z' 形式の現在の UTC 時刻を使用する必要があります。このパラメーターを生成する前に、ローカル時刻を UTC に変換してください。
SDK は通常、システムクロックからリクエストのタイムスタンプを生成します。オペレーティングシステムや Postman は、システムクロックが正確である限り、ローカルのタイムゾーンを使用できます。
リクエストを構築する際に、署名と SignatureNonce はどのように処理しますか?
リクエストごとに新しい SignatureNonce を使用してください。Specified signature is not matched with our calculation が返された場合は、AccessKey シークレット、パラメーターの並べ替え、URL エンコーディング、および署名に使用した HTTP メソッドがリクエストの送信に使用したメソッドと一致しているかを確認してください。
AccessKey 認証情報を使用してリクエストに署名してください。リクエストパラメーターと署名アルゴリズムについては、「OpenAPI を使用したトークンの取得」をご参照ください。