
# 应用集成相关问题
#### 应用服务器调用平台接口如何进行认证鉴权
客户应用服务器调用平台接口可以通过调用IAM接口获取X-Auth-Token或者集成SDK使用AKSK方式认证鉴权。华为云账号可能需要定期更新密码，生产系统建议集成IoTDA的[应用侧SDK](https://support.huaweicloud.com/sdkreference-iothub/iot_10_1000.html)，使用AKSK鉴权。
#### 应用集成IoTDA应用侧SDK报错Missing request header 'X-Auth-Token' for method parameter of type String
**问题描述**
应用集成了IoTDA的应用侧SDK，使用AKSK进行认证鉴权，但是接口返回400状态码，错误描述是Missing request header 'X-Auth-Token' for method parameter of type String。
**可能原因**
AKSK签名算法与对应集群支持的签名算法不匹配导致
**解决方法**
1. 访问IoTDA北京四基础版接入地址时，使用的是通用的[AKSK签名算法](https://support.huaweicloud.com/devg-apisign/api-sign-provide01.html)。
2. 访问IoTDA标准版或者企业版的接入地址时，使用的是衍生的AKSK签名算法，需要明确指定使用衍生算法，详情可参考集成[应用侧SDK](https://support.huaweicloud.com/sdkreference-iothub/iot_10_1000.html)的注释说明。
 
 #### 如何获取新域名和老域名接入的地址/证书？
新域名当前不提供CA证书，新/老域名的接入地址以及老域名的证书请参考[资源获取](https://support.huaweicloud.com/devg-iothub/iot_02_1004.html)。
 #### 新旧域名接入的鉴权方式有什么区别？
新域名是采用华为云账号密码，调用IAM接口鉴权，旧域名使用appid/secret，调用IoT平台的鉴权接口。
 #### 应用服务器如何获取设备上报到物联网平台的数据？
可以通过规则引擎配置数据转发规则
1. 物联网平台通过调用配置的规则将设备侧上报的数据转发至其他云服务（kafka、DIS、OBS等）或第三方应用。
2. 物联网平台通过调用配置的规则将设备侧上报的数据转发至第三方云服务平台（kafka、DIS、OBS等）客户自己行从第三方云服务平台获取数据实现业务应用。
 
 #### 应用侧如何获取appid和secret？
![](https://support.huaweicloud.com/iothub_faq/public_sys-resources/note_3.0-zh-cn.png)
此操作仅针对老用户（即2020年3月20日00:00（北京时间））前开通设备接入服务的用户，如果您是新用户，请[提交工单](https://console.huaweicloud.com/ticket/?region=cn-north-4&locale=zh-cn#/ticketindex/createIndex)说明您的诉求。
1. 找到旧接口的访问地址及证书，单击进入设备接入服务。
2. 在"应用列表"页面选择应用，单击重置，即可获取重置后的密钥。
   图1应用详情界面   
   ![](https://support.huaweicloud.com/iothub_faq/figure/zh-cn_image_0000001548686110.png "点击放大") 
 
 #### 应用服务器调用接口失败怎么处理？
1. 请检查应用服务器的网络连接情况，确保应用服务器网络正常。
2. 检查请求中物联网平台的[应用接入地址和端口](https://support.huaweicloud.com/iothub_faq/iot_faq_01003.html#ZH-CN_TOPIC_0000001600154605__section576025135317)是否正确。
3. 使用"ping {物联网平台应用接入地址}"命令，查看应用服务器是否可以正常访问物联网平台的应用接入地址。
4. 使用"telnet {物联网平台应用接入地址} {端口}"命令，查看是否可以打开物联网平台的应用接入端口。
5. 检查应用服务器是否集成了物联网平台的证书，证书可从[开发资源获取](https://support.huaweicloud.com/devg-iothub/iot_02_1004.html)页面下载。
6. 根据[接口文档](https://support.huaweicloud.com/api-iothub/iot_06_v5_0090.html)，查看各个参数的填写是否正确。
7. 使用V3接口情况下，调用"鉴权"接口返回的accessToken有效期是一个小时，过期后，调用其他接口也会失败。请调用"鉴权"接口获取新的accessToken后，重新调用其他接口。
8. 使用V5接口情况下，调用"[认证鉴权](https://support.huaweicloud.com/api-iothub/iot_06_v5_0091.html)"接口返回的X-Auth-Token有效期为24小时，过期后，调用其他接口也会失败。请调用"认证鉴权"获取新的X-Auth-Token后，重新调用其他接口即可。
9. 如果以上问题均已排除，请根据接口返回的错误码进行处理，错误码的含义可参见[错误码列表](https://support.huaweicloud.com/api-iothub/ErrorCode.html)。如果应用封装了错误码，可以使用postman调用相同的接口，获取设备接入返回的原始错误码及描述，再按照对应错误码的处理建议进行处理。
   例如调用[创建设备](https://support.huaweicloud.com/api-iothub/iot_06_v5_0046.html)接口提示"nodeId重复"，则需要查看在自己的账号下是否已经存在相同nodeId的设备。如果在自己的账号下未找到使用相同nodeId的设备，请[提交工单](https://console.huaweicloud.com/ticket/?region=cn-north-4&locale=zh-cn#/ticketindex/createIndex)联系技术专家，由支撑人员检查该nodeId在设备接入的使用情况。
   
 
#### 应用服务器如何获取设备的IMEI号？
订阅bindDevice（绑定设备通知）后，真实设备接入时，物联网平台会推送IMEI号、deviceId等信息到应用服务器。详见API参考订阅平台业务数据接口。
#### 应用服务器如何下发缓存命令？
在调用"创建设备命令"接口时，"expireTime"参数设置为大于0的值。
"expireTime"为下发命令的超时时间，单位为秒，表示设备命令在创建后expireTime秒内有效，超过这个时间范围后命令将不再下发，如果未设置则默认为48小时（86400s\*2）。
#### 平台接口只能用Java调用吗？
平台的接口是标准的Restful API，支持多种语言调用，比如Java、Python、Go等，请参考[应用侧SDK](https://support.huaweicloud.com/sdkreference-iothub/iot_10_1000.html)。
#### 通过接口在平台注册设备，为什么一段时间后注册设备会被平台删除？
通过调用接口注册设备时，需要填写"timeout"参数。注册完成后，如果在"timeout"参数设定的时间内，设备还未和物联网平台绑定，则该注册设备将会被物联网平台删除。
"timeout"取值范围为0～2147483647s（68年），当设置为0时，则该注册设备永久有效，不会被删除。
#### 不同实例下可以创建相同的产品吗？在不同的资源空间或相同的空间下，产品名称、产品ID是否可以一致？
不同实例下可以创建相同的产品。相同实例不同资源空间下可以创建相同的产品。
#### 不同实例下可以创建相同的设备吗？
不同实例下可以创建相同的设备。相同实例下不可以创建相同设备。
