獲取Token
訪問令牌(Access Token)主要用于身份驗證和授權,在調用阿里云智能語音交互API時,客戶端應用或服務器端程序需要先獲取一個有效的Token作為憑證,以此來證明請求的合法性,并獲得對智能語音服務的訪問權限。本文介紹Token的獲取方式和常見問題。
場景概述
獲取Token方式 | 建議使用場景 |
僅供測試使用,在控制臺獲取Token。 | |
正式環境使用,通過傳入AccessKey ID和AccessKey Secret,在SDK通過代碼定期自動獲取Token。 | |
若對應的編程語言缺少SDK,或者需要控制依賴組件,可以通過OpenAPI獲取Token。 |
常見問題
獲取Token后調用服務報錯” 'status': 40020105, 'message': 'Meta:APPKEY_NOT_EXIST:Appkey not exist ?“如何解決?
SDK如何通過代碼獲取Token的失效時間?接收到的返回值是1657132052,轉成時間是1970-01-20 12:18:52的原因是什么?
獲取Token異常,提示”Server unreachable: java.net.ConnectException: Connection refused?“如何解決?
通過OpenAPI獲取Token報錯“Specified signature is not matched with our calculation”如何解決?
通過SDK獲取Token,當系統的時間不是標準時間時會獲取失敗,在SDK中是否可以自己設置timestamp,而不是獲取系統的時間?
獲取Token后調用服務報錯” 'status': 40020105, 'message': 'Meta:APPKEY_NOT_EXIST:Appkey not exist ?“如何解決?
該報錯是指AppKey不存在。
請您檢查AppKey是否存在,若使用子賬號,需要確認子賬號是否被授權,然后確認AppKey、AccessKey和Token是否歸屬同一個賬號。
如果是主賬號,有明顯標識主賬號,請核對AppKey、AccessKey以及生成的Token信息是否歸屬同一賬號。
如果是RAM子賬號,有明顯標識RAM用戶,需要確認是否為RAM子賬號增加NLS相關權限,然后核對AppKey、AccessKey以及生成的Token信息是否歸屬同一賬號。
獲取token的時候報錯ErrCode 40020503 如何解決?
40020503錯誤指RAM子賬號沒有語音接口的權限,請前往訪問控制臺為RAM用戶授予AliyunNLSFullAccess權限。具體操作,請參見為RAM用戶授權。
調用語音API時,返回403 Forbidden錯誤如何解決?
403是指Token過期或無效。
請完成以下操作:
檢查使用的Token是否填寫正確。
檢查使用的Token是否過期,如果過期需要獲取新的Token。
獲取Token返回為空或“null”如何解決?
進入AccessKey管理頁面,檢查AccessKey ID和AccessKey Secret是否正確。
檢查是否已開通智能語音交互服務,如未開通請前往控制臺開通服務。
如果使用RAM子賬號,請檢查是否對該RAM子賬號賦予AliyunNLSFullAccess權限。
檢查是否修改了當前系統時間,導致系統時間和實際時間不一致。
獲取時Token報錯”ErrMsg: 'No permission!'“如何解決?
該報錯是指沒有權限。
如果使用RAM子賬號,請檢查是否對該RAM子賬號賦予AliyunNLSFullAccess權限。具體操作,請參見準備賬號。
是否可以獲取長期有效的Token?
出于安全考慮,智能語音交互服務不提供長期有效的Token。
SDK如何通過代碼獲取Token的失效時間?接收到的返回值是1657132052,轉成時間是1970-01-20 12:18:52的原因是什么?
Token的有效期通過服務端響應消息的ExpireTime參數獲取,為秒級時間戳。
獲取Token失敗,顯示網絡不可達”connect failed“如何解決?
檢查AppKey、Token以及URL是否無誤。
檢查網絡是否連通。連接錯誤一般是網絡問題,建議您Ping域名或者使用telnet命令判斷網絡是否通暢。
獲取Token異常,提示”Server unreachable: java.net.ConnectException: Connection refused?“如何解決?
顯示被網絡拒絕,建議您Ping域名或者使用telnet命令判斷網絡是否通暢,如果不通請檢查網絡。
postman測試時區不合適導致Token獲取失敗如何解決?
請您將時間改為北京時區,即東八區時間。
重新獲取Token是否會導致已獲取的Token失效?
不會。重新獲取Token不會影響已獲取Token的有效性,有效性只與時間有關。Token的有效期通過服務端響應消息的ExpireTime參數獲取。
多個設備如何共用一個有效期內的Token?
同一個Token只要在有效期內可以被重復使用。
如何通過HTTP接口獲取Token,不用SDK方式用網址直接獲取,自己組織參數、簽名該如何進行請求 ?
具體操作,請參見獲取Token協議說明。
通過OpenAPI獲取Token時,參數SignatureNonce不變,不能使用重復的UUID嗎?
具體操作,請參見獲取Token協議說明。
通過OpenAPI獲取Token報錯“Specified signature is not matched with our calculation”如何解決?
具體操作,請參見獲取Token協議說明。
通過SDK獲取Token,當系統的時間不是標準時間時會獲取失敗,在SDK中是否可以自己設置timestamp,而不是獲取系統的時間?
不可以。Token需要根據系統時間來生成。