Quick Audience オープンプラットフォーム API を認証して呼び出す方法について説明します。
Quick Audience オープンプラットフォームの API 呼び出し
オープンプラットフォーム API を呼び出すには、まず Quick Audience でアプリケーションを作成する必要があります。これにより、システムはアプリケーション ID、AccessKey、および AccessSecret を生成します。これらはすべての API 呼び出しに必須です。
署名
アプリケーションが必要な API 権限を取得したら、appId、accessKey、timestamp パラメーターをリクエストの URI に追加し、署名済みのAuthorization フィールドをリクエストヘッダーに追加します。
共通パラメーターの説明
|
パラメーター |
説明 |
場所 |
|
appId |
オープンプラットフォームから取得したアプリケーションの ID です。 |
リクエストの統一資源識別子 (URI) パラメーターに含めます。 |
|
accessKey |
オープンプラットフォームから取得したアプリケーションの AccessKey です。 |
リクエストの URI パラメーターに含めます。 |
|
timestamp |
現在のタイムスタンプ (ミリ秒単位) です。 |
リクエストの URI パラメーターに含めます。 |
|
Authorization |
生成された署名です。 |
リクエストヘッダーに含めます。 |
リクエストには、次のように署名します:
-
リクエストパラメーターから正規化されたクエリ文字列を作成します。
-
署名の計算に使用するすべてのパラメーター (
accessSecretを含む) を、パラメーター名で辞書順に並べ替えます。これらのパラメーターには、共通パラメーターと API 固有のカスタムパラメーターの両方が含まれます。注:GET リクエストの場合、これらのパラメーター (accessSecretを除く) が URI のクエリ文字列を構成します。クエリ文字列は、疑問符 (?) の後に続き、アンパサンド (&) を区切り文字として使用します。 -
パラメーター名と値を UTF-8 でエンコードします。
-
URL-encode all URL parameters.
コード例
以下の Java コード例は、署名の生成方法を示します。
String appId="tttt";
String accessKey = "xxxx";
String accessSecret ="yyyy";
String timeStamp = "1708235644862";
SortedMap<String, String> map = new TreeMap<>();
map.put("appId", appId);
map.put("accessKey", accessKey);
map.put("accessSecret",accessSecret );
map.put("timestamp", timeStamp);
// API 固有の追加パラメーターがある場合は、ここに追加します。
String aa = getCanonicalQueryString(map);
System.out.println(aa);
String authorization = org.apache.commons.codec.digest.DigestUtils.md5Hex(aa);
System.out.println(authorization);public static String getCanonicalQueryString(SortedMap<String, String> paramsMap) {
StringBuilder queryString = new StringBuilder();
boolean isFirstParameter = true;
for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
String paramName = entry.getKey();
String value = entry.getValue();
if (!isFirstParameter) {
queryString.append("&");
} else {
isFirstParameter = false;
}
queryString.append(paramName).append("=").append(value);
}
return queryString.toString();
}
例:
curl --location -g --request POST 'http://{ドメイン名}/openapi/apipath/xxxx?appId=aaa&accessKey=xxx×tamp=yyy' \
--header 'Authorization: demosign'
Quick Audience はこれらのパラメーターに基づいて署名を検証します。アプリケーションが存在しない場合、または署名が正しくない場合、リクエストは拒否されます。その他の API パラメーターの詳細については、各 API のドキュメントをご参照ください。
ドメイン名
|
環境 |
ドメイン名 |
|
張家口 |
quicka.aliyun.com |
|
上海 |
quicka-shanghai.aliyun.com |
エラーコード
|
エラーコード |
エラーメッセージ |
説明 |
|
ES05910010001 |
Application does not exist. |
オープンプラットフォーム上にアプリケーションが存在することを確認してください。 |
|
ES05910010002 |
Incorrect signature. |
署名が正しく生成されたことを確認してください。 |
|
ES05910010003 |
Timestamp verification failed. |
API 呼び出しは、タイムスタンプが生成されてから 30 分以内に行う必要があります。この時間を超えると、検証は失敗します。 |
|
ES05910010004 |
The application does not have permission for this API. |
API を呼び出す前に、アプリケーションがその API をサブスクライブしている必要があります。 |
|
ES05910010005 |
The appId, accessKey, or timestamp parameter is missing or incorrect. |
|