首页 文章

Iot Hub连接字符串在azure-iot-sdk-c样本中不起作用

提问于
浏览
1

我正在使用覆盆子pi 3,raspbian OS,我正在使用azure-iot-sdk-c

我按照这里的github说明进行操作:https://github.com/Azure/azure-iot-sdk-c,我下载并正确构建了iothub_client / samples文件夹中的所有示例

当我将连接字符串放在iothub_client_sample_http.c中时,错误是

这里:

static const char* connectionString = "[device connection string]";

并运行它,我得到许多这样的错误:

错误:时间:星期一12月19日14:23:36 2016文件:/home/pi/Desktop/azure-iot-sdk-c/c-utility/adapters/httpapi_curl.c Func:HTTPAPI_ExecuteRequest行:576 HTTP通信失败:服务器回复代码是401信息:HTTP响应:{“消息”:“ErrorCode:IotHubUnauthorizedAccess;未授权”,“ExceptionMessage”:“跟踪ID:13262df6828d469e9b29e2176a86fad3-G:9-TimeStamp:12/19/2016 22:23:37 “}错误:时间:星期一12月19日14:23:36 2016文件:/home/pi/Desktop/azure-iot-sdk-c/iothub_client/src/iothubtransporthttp.c Func:DoEvent Line:1626意外的HTTP状态代码( 401)

这是我的连接结构:

static const char* connectionString = "HostName=<myiothub>;DeviceId=<mydevice>;SharedAccessKey=<myaccesskey>";

如果我直接使用azure门户网站提供的字符串,为什么它会给我一个401?

我已经尝试了每个连接字符串(hubowner,service&device),仍然给我401:C

1 回答

  • 1

    我生成并使用SAS密钥作为连接字符串,一切正常 .

    static const char* connectionString ="HostName=<myiothub>;CredentialType=SharedAccessSignature;DeviceId=<mydevice>;SharedAccessSignature=SharedAccessSignature sr=<iothub>&sig=<saskey>&se=<time>&skn=device"
    

    我从Device explorer的预建版本生成了SAS

    这是有效的,因为,如_1370211中所述:

    IoT Hub对特定设备进行身份验证的唯一方法是使用设备标识对称密钥 . 在使用共享访问策略访问设备功能的情况下,解决方案必须将发布安全令牌的组件视为可信子组件 .

相关问题