2. 申請安全憑證

1. 在云 API 密鑰頁面,單擊【新建密鑰】即可以創(chuàng)建一對 SecretId/SecretKey。

2. 在彈窗里復(fù)制密鑰

安全憑證包括 SecretId 和 SecretKey:

3. 生成簽名串

有了安全憑證 SecretId 和 SecretKey 后,就可以生成簽名串了。以下是使用簽名方法 v1 生成簽名串的詳細(xì)過程:

假設(shè)用戶的 SecretId 和 SecretKey 分別是:

注意:這里只是示例,請根據(jù)用戶實際申請的 SecretId 和 SecretKey 進行后續(xù)操作!

以云服務(wù)器查看實例列表(DescribeInstances)請求為例,當(dāng)用戶調(diào)用這一接口時,其請求參數(shù)可能如下:

參數(shù)名稱中文參數(shù)值
Action方法名DescribeInstances
SecretId密鑰 IDAKID********************************
Timestamp當(dāng)前時間戳1465185768
Nonce隨機正整數(shù)11886
Region實例所在區(qū)域ap-guangzhou
InstanceIds.0待查詢的實例 IDins-09dx96dg
Offset偏移量0
Limit最大允許輸出20
Version接口版本號2017-03-12

這里只展示了部分公共參數(shù)和接口輸入?yún)?shù),用戶可以根據(jù)實際需要添加其他參數(shù),例如 Language 和 Token 公共參數(shù)。

3.1. 對參數(shù)排序

首先對所有請求參數(shù)按參數(shù)名的字典序( ASCII 碼)升序排序。注意:1)只按參數(shù)名進行排序,參數(shù)值保持對應(yīng)即可,不參與比大小;2)按 ASCII 碼比大小,如 InstanceIds.2 要排在 InstanceIds.12 后面,不是按字母表,也不是按數(shù)值。用戶可以借助編程語言中的相關(guān)排序函數(shù)來實現(xiàn)這一功能,如 PHP 中的 ksort 函數(shù)。上述示例參數(shù)的排序結(jié)果如下:

{
'Action' : 'DescribeInstances',
'InstanceIds.0' : 'ins-09dx96dg',
'Limit' : 20,
'Nonce' : 11886,
'Offset' : 0,
'Region' : 'ap-guangzhou',
'SecretId' : 'AKID********************************',
'Timestamp' : 1465185768,
'Version': '2017-03-12',
}

使用其它程序設(shè)計語言開發(fā)時,可對上面示例中的參數(shù)進行排序,得到的結(jié)果一致即可。

3.2. 拼接請求字符串

此步驟生成請求字符串。
將把上一步排序好的請求參數(shù)格式化成“參數(shù)名稱=參數(shù)值”的形式,如對 Action 參數(shù),其參數(shù)名稱為 “Action” ,參數(shù)值為 “DescribeInstances” ,因此格式化后就為 Action=DescribeInstances 。
注意:“參數(shù)值”為原始值而非 url 編碼后的值。

然后將格式化后的各個參數(shù)用”&”拼接在一起,最終生成的請求字符串為:

Action=DescribeInstances&InstanceIds.0=ins-09dx96dg&Limit=20&Nonce=11886&Offset=0&Region=ap-guangzhou&SecretId=AKID********************************&Timestamp=1465185768&Version=2017-03-12

3.3. 拼接簽名原文字符串

此步驟生成簽名原文字符串。
簽名原文字符串由以下幾個參數(shù)構(gòu)成:

  1. 請求方法: 支持 POST 和 GET 方式,這里使用 GET 請求,注意方法為全大寫。
  2. 請求主機:查看實例列表(DescribeInstances)的請求域名為:cvm.tencentcloudapi.com。實際的請求域名根據(jù)接口所屬模塊的不同而不同,詳見各接口說明。
  3. 請求路徑: 當(dāng)前版本云API的請求路徑固定為 / 。
  4. 請求字符串: 即上一步生成的請求字符串。

簽名原文串的拼接規(guī)則為:請求方法 + 請求主機 +請求路徑 + ? + 請求字符串

示例的拼接結(jié)果為:

GETcvm.tencentcloudapi.com/?Action=DescribeInstances&InstanceIds.0=ins-09dx96dg&Limit=20&Nonce=11886&Offset=0&Region=ap-guangzhou&SecretId=AKID********************************&Timestamp=1465185768&Version=2017-03-12

3.4. 生成簽名串

此步驟生成簽名串。
首先使用 HMAC-SHA1 算法對上一步中獲得的簽名原文字符串進行簽名,然后將生成的簽名串使用 Base64 進行編碼,即可獲得最終的簽名串。

具體代碼如下,以 PHP 語言為例:

$secretKey = '********************************';
$srcStr = 'GETcvm.tencentcloudapi.com/?Action=DescribeInstances&InstanceIds.0=ins-09dx96dg&Limit=20&Nonce=11886&Offset=0&Region=ap-guangzhou&SecretId=AKID********************************&Timestamp=1465185768&Version=2017-03-12';
$signStr = base64_encode(hash_hmac('sha1', $srcStr, $secretKey, true));
echo $signStr;

最終得到的簽名串為:

9FzTQAN1UZ489+BqCg1fNBQaCqw=

使用其它程序設(shè)計語言開發(fā)時,可用上面示例中的原文進行簽名驗證,得到的簽名串與例子中的一致即可。

alt

4. 簽名串編碼

生成的簽名串并不能直接作為請求參數(shù),需要對其進行 URL 編碼。

如上一步生成的簽名串為 9FzTQAN1UZ489+BqCg1fNBQaCqw= ,最終得到的簽名串請求參數(shù)(Signature)為:9FzTQAN1UZ489%2BBqCg1fNBQaCqw%3D,它將用于生成最終的請求 URL。

注意:如果用戶的請求方法是 GET,或者請求方法為 POST 同時 Content-Type 為 application/x-www-form-urlencoded,則發(fā)送請求時所有請求參數(shù)的值均需要做 URL 編碼,參數(shù)鍵和=符號不需要編碼。非 ASCII 字符在 URL 編碼前需要先以 UTF-8 進行編碼。

注意:有些編程語言的網(wǎng)絡(luò)庫會自動為所有參數(shù)進行 urlencode,在這種情況下,就不需要對簽名串進行 URL 編碼了,否則兩次 URL 編碼會導(dǎo)致簽名失敗。

注意:其他參數(shù)值也需要進行編碼,編碼采用 RFC 3986。使用 %XY 對特殊字符例如漢字進行百分比編碼,其中“X”和“Y”為十六進制字符(0-9 和大寫字母 A-F),使用小寫將引發(fā)錯誤。

點擊右上角賬號,下拉列表選擇【密鑰管理】-點擊【新建密鑰】,可獲取訪問密鑰(Access Key ID、Secret Access Key)。后續(xù)可使用此密鑰調(diào)用接口,請您妥善保管。

5. 簽名演示

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Random;
import java.util.TreeMap;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;

public class TencentCloudAPIDemo {
private final static String CHARSET = "UTF-8";

public static String sign(String s, String key, String method) throws Exception {
Mac mac = Mac.getInstance(method);
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(CHARSET), mac.getAlgorithm());
mac.init(secretKeySpec);
byte[] hash = mac.doFinal(s.getBytes(CHARSET));
return DatatypeConverter.printBase64Binary(hash);
}

public static String getStringToSign(TreeMap<String, Object> params) {
StringBuilder s2s = new StringBuilder("GETcvm.tencentcloudapi.com/?");
// 簽名時要求對參數(shù)進行字典排序,此處用TreeMap保證順序
for (String k : params.keySet()) {
s2s.append(k).append("=").append(params.get(k).toString()).append("&");
}
return s2s.toString().substring(0, s2s.length() - 1);
}

public static String getUrl(TreeMap<String, Object> params) throws UnsupportedEncodingException {
StringBuilder url = new StringBuilder("https://cvm.tencentcloudapi.com/?");
// 實際請求的url中對參數(shù)順序沒有要求
for (String k : params.keySet()) {
// 需要對請求串進行urlencode,由于key都是英文字母,故此處僅對其value進行urlencode
url.append(k).append("=").append(URLEncoder.encode(params.get(k).toString(), CHARSET)).append("&");
}
return url.toString().substring(0, url.length() - 1);
}

public static void main(String[] args) throws Exception {
TreeMap<String, Object> params = new TreeMap<String, Object>(); // TreeMap可以自動排序
// 實際調(diào)用時應(yīng)當(dāng)使用隨機數(shù),例如:params.put("Nonce", new Random().nextInt(java.lang.Integer.MAX_VALUE));
params.put("Nonce", 11886); // 公共參數(shù)
// 實際調(diào)用時應(yīng)當(dāng)使用系統(tǒng)當(dāng)前時間,例如: params.put("Timestamp", System.currentTimeMillis() / 1000);
params.put("Timestamp", 1465185768); // 公共參數(shù)
// 需要設(shè)置環(huán)境變量 TENCENTCLOUD_SECRET_ID,值為示例的 AKID********************************
params.put("SecretId", System.getenv("TENCENTCLOUD_SECRET_ID")); // 公共參數(shù)
params.put("Action", "DescribeInstances"); // 公共參數(shù)
params.put("Version", "2017-03-12"); // 公共參數(shù)
params.put("Region", "ap-guangzhou"); // 公共參數(shù)
params.put("Limit", 20); // 業(yè)務(wù)參數(shù)
params.put("Offset", 0); // 業(yè)務(wù)參數(shù)
params.put("InstanceIds.0", "ins-09dx96dg"); // 業(yè)務(wù)參數(shù)
// 需要設(shè)置環(huán)境變量 TENCENTCLOUD_SECRET_KEY,值為示例的 ********************************
params.put("Signature", sign(getStringToSign(params), System.getenv("TENCENTCLOUD_SECRET_KEY"), "HmacSHA1")); // 公共參數(shù)
System.out.println(getUrl(params));
}
}

6. 返回結(jié)果

{
"Response": {
"TotalCount": 0,
"InstanceStatusSet": [],
"RequestId": "b5b41468-520d-4192-b42f-595cc34b6c1c"
}
}


}
res = service.json(‘translate’, {}, json.dumps(body))
print(json.loads(res))

7. 常見問題

Q:如何找到騰訊AI

A:冪簡集成是國內(nèi)領(lǐng)先的API集成管理平臺,專注于為開發(fā)者提供全面、高效、易用的API集成解決方案。冪簡API平臺可以通過以下兩種方式找到所需API:通過關(guān)鍵詞搜索API(例如,輸入’騰訊AI‘這類品類詞,更容易找到結(jié)果)、或者從API hub分類頁進入尋找。

Q:NLP 服務(wù)的優(yōu)勢是什么?
A:我們的優(yōu)勢可以概括為三個方面:

語料上,NLP 服務(wù)多年來專注中文自然語言處理,在不同場景下積累了千億級互聯(lián)網(wǎng)語料。

技術(shù)上,整合了騰訊內(nèi)部優(yōu)秀的 NLP 能力,擁有數(shù)千篇相關(guān)技術(shù)專利和論文。

服務(wù)上,NLP 服務(wù)曾為數(shù)個騰訊億級用戶產(chǎn)品提供堅實的服務(wù)支撐。

Q:NLP 服務(wù)是否收費?
A:NLP 服務(wù),已于2023年4月25日正式開始新的收費標(biāo)準(zhǔn)。基礎(chǔ) NLP 服務(wù)(詞法分析、相似詞召回、詞相似度、句子相似度),將為每個騰訊云賬號提供累計5萬次的免費調(diào)用額度;高級 NLP 服務(wù)(文本潤色、句子糾錯、文本補全、句子生成),將為每個騰訊云賬號提供累計1000次的免費調(diào)用額度。

Q:NLP 服務(wù)如何接入使用?
A:我們提供完備的 API 服務(wù)以及對應(yīng)的 SDK ,您只要注冊了騰訊云賬號,即可按照 API 文檔 接入使用,并可在我們的產(chǎn)品控制臺上看到對應(yīng)的使用數(shù)據(jù)。

Q:NLP 服務(wù)有免費額度嗎?
A:基礎(chǔ) NLP 服務(wù)(詞法分析、相似詞召回、詞相似度、句子相似度),將為每個騰訊云賬號提供累計5萬次的免費調(diào)用額度;高級 NLP 服務(wù)(文本潤色、句子糾錯、文本補全、句子生成),將為每個騰訊云賬號提供累計1000次的免費調(diào)用額度。

Q:騰訊AI的替代品有哪些?

提供AI大模型API的服務(wù)商除了騰訊AI,還有其他替代服務(wù)商也提供類似api服務(wù),例如:

360多模態(tài)大語言模型語音大模型服務(wù)MiniMax-稀宇科技通用大模型開放平臺-華藏訊飛星火認(rèn)知大模型

更多競品可以在冪簡集成開放平臺中找到。

Q:騰訊AI這個密鑰還適用于哪些api?

人臉識別圖像創(chuàng)作機器翻譯 TMT

8.  總結(jié)

本文旨在為開發(fā)者們提供一份詳盡且實用的“如何獲取騰訊AI開放平臺訪問token分步指南”。從騰訊AI平臺賬號的注冊,到開發(fā)者身份的認(rèn)證,再到API服務(wù)密鑰的成功獲取,本文覆蓋了整個流程的每一個關(guān)鍵環(huán)節(jié),并配以清晰的步驟說明和詳盡的操作指導(dǎo),確保了每位開發(fā)者都能輕松上手,順利完成每一步操作。此外,本文還特別強調(diào)了密鑰獲取后的可用性測試步驟,這是確保API能夠順利集成到應(yīng)用中,并發(fā)揮最佳效果的重要保障。通過這一指南,開發(fā)者們不僅能夠快速掌握獲取騰訊AI訪問token的方法,還能學(xué)會如何有效地進行后續(xù)的應(yīng)用集成與測試,從而充分發(fā)揮騰訊AI開放平臺的強大功能。本文為開發(fā)者們提供了一個全面、實用的指南,幫助他們輕松獲取騰訊AI密鑰,并將這一先進的數(shù)據(jù)處理能力有效集成到應(yīng)用中,從而提升應(yīng)用的智能化水平,優(yōu)化用戶體驗,為數(shù)字化轉(zhuǎn)型之路增添強勁動力。

上一篇:

如何獲取八爪魚API開放平臺訪問token分步指南

下一篇:

如何獲取OpenRouter API Key 密鑰(分步指南)
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費