本文檔提供了針對介面調用的通用指南和說明。
QA 開放平台介面調用
開放平台上的介面調用需要依託於在 Quick Audience 開放平台上建立的應用。成功建立應用後,系統將自動產生應用ID、AccessKey 和 AccessSecret,這些關鍵參數是執行介面調用時必需的憑證。
簽名
當您的應用獲得了相應的介面許可權後,您可以按照以下步驟進行調用:在發起請求的介面URL中附加appId、accessKey和timestamp(即時間戳記參數)。同時,您需要在要求標頭(header)中添加經過簽名的Authorization欄位。
公用參數說明
參數 | 說明 | 位置 |
appId | 開放平台的應用id | 請求URI中的參數部分 |
accessKey | 開放平台的應用的ak | 請求URI中的參數部分 |
timestamp | 目前時間戳(毫秒) | 請求URI中的參數部分 |
Authorization | 產生的簽名 | 請求的header中 |
使用者在訪問時,按照下面的方法對請求進行簽名處理:
使用請求參數構造正常化的請求字串(Canonicalized Query String)。
按照參數名稱的字典順序對請求中所有的請求參數(包括文檔中描述的“公用請求參數”和給定了的請求介面的自訂參數)進行排序。 註:當使用GET方法提交請求時,這些參數就是請求URI中的參數部分(即URI中"?"之後由"&"串連的部分),產生簽名的參數中還需要accessSecret。
名稱和值要使用UTF-8字元集進行編碼。
url的參數都需要使用urlEncode。
程式碼範例
其中籤名的產生邏輯如下 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);
//如果是get請求,還有其他的query參數,那麼繼續加
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://{quick audience 公網網域名稱}/openapi/apipath/xxxx?appId=aaa&accessKey=xxx×tamp=yyy' \
--header 'Authorization: demosign'Quick Audience 會根據以上的參數進行驗簽,如果應用不存在,簽名不正確等都會攔截介面請求,其他的介面參數詳見具體的介面文檔。
網域名稱
環境 | 網域名稱 |
張家口 | quicka.aliyun.com |
上海 | quicka-shanghai.aliyun.com |
異常碼
異常code | 錯誤提示 | 說明 |
ES05910010001 | APP不存在 | 請確認在開放平台建立的APP是否存在 |
ES05910010002 | 簽名不正確 | 請確認產生簽名的方式是否正確 |
ES05910010003 | 時間戳記校正不通過 | 產生的時間戳記需要在30分鐘內調用,否則校正不通過 |
ES05910010004 | 應用沒有當前介面許可權 | 應用需要訂閱介面API才可以使用 |
ES05910010005 | 檢查appId, accessKey, timestamp 傳參是否正確 | 開放平台的介面,公用參數appId, accessKey, timestamp必須傳,且按照平台的規範 |