获取Token概述

访问令牌(Access Token)主要用于身份验证和授权,在调用阿里云智能语音交互API时,客户端应用或服务器端程序需要先获取一个有效的Token作为凭证,以此来证明请求的合法性,并获得对智能语音服务的访问权限。本文介绍Token的获取方式和常见问题。

场景概述

获取Token方式

建议使用场景

通过控制台获取Token

仅供测试使用,在控制台获取Token。

通过SDK获取Token

正式环境使用,通过传入AccessKey ID和AccessKey Secret,在SDK通过代码定期自动获取Token。

通过OpenAPI获取Token

若对应的编程语言缺少SDK,或者需要控制依赖组件,可以通过OpenAPI获取Token。

常见问题

获取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过期或无效。

请完成以下操作:

  1. 检查使用的Token是否填写正确。

  2. 检查使用的Token是否过期,如果过期需要获取新的Token。

获取Token返回为空或“null”如何解决?

  1. 进入AccessKey管理页面,检查AccessKey ID和AccessKey Secret是否正确。

  2. 检查是否已开通智能语音交互服务,如未开通请前往控制台开通服务

  3. 如果使用RAM子账号,请检查是否对该RAM子账号赋予AliyunNLSFullAccess权限。

  4. 检查是否修改了当前系统时间,导致系统时间和实际时间不一致。

获取时Token报错”ErrMsg: 'No permission!'“如何解决?

该报错是指没有权限。

如果使用RAM子账号,请检查是否对该RAM子账号赋予AliyunNLSFullAccess权限。具体操作,请参见准备账号

是否可以获取长期有效的Token?

出于安全考虑,智能语音交互服务不提供长期有效的Token。

SDK如何通过代码获取Token的失效时间?接收到的返回值是1657132052,转成时间是1970-01-20 12:18:52的原因是什么?

Token的有效期通过服务端响应消息的ExpireTime参数获取,为秒级时间戳。

获取Token失败,显示网络不可达”connect failed“如何解决?

  1. 检查AppKey、Token以及URL是否无误。

  2. 检查网络是否连通。连接错误一般是网络问题,建议您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方式用网址直接获取,自己组织参数、签名该如何进行请求 ?

具体操作,请参见通过OpenAPI获取Token

通过OpenAPI获取Token时,参数SignatureNonce不变,不能使用重复的UUID吗?

具体操作,请参见通过OpenAPI获取Token

通过OpenAPI获取Token报错“Specified signature is not matched with our calculation”如何解决?

具体操作,请参见通过OpenAPI获取Token

通过SDK获取Token,当系统的时间不是标准时间时会获取失败,在SDK中是否可以自己设置timestamp,而不是获取系统的时间?

不可以。Token需要根据系统时间来生成。