我已经在Bluemix中部署了GeoSpatial初学者应用程序。
它可以正常工作,直到我想连接到沃森IoT平台,而不是演示MQTT服务器。
我将mqtt1.m2m4connectedlife.com更改为dzqml6.messaging.internetofthings.ibmcloud.com,并将mqtt_uid和mqtt_pw添加到start参数jsonObject中。
我在Watson IoT平台仪表板中创建了一个API密钥,并将这些值用于mqtt_uid和mqtt_pw。
然后,在启动应用程序时,我在日志中得到一个“错误:连接拒绝:未授权”。
然后,我还尝试了apiKey和apiToken,为mqtt_uid和mqtt_pw构建了沃森IoT平台环境变量,但仍然得到了相同的错误。
我还尝试了客户端和通知/输入主题的不同值,但都没有成功。
我阅读了其他几篇具有类似错误的文章,这些错误在一段时间后得到了解决,因为在创建组织和分发到所有服务器之间存在延迟。
https://developer.ibm.com/answers/questions/163862/iot-cloud-error-not-authorized.html
所以我等了一天,但仍然有同样的错误。
我还加入了本组织的常任成员,如本文所建议的:拒绝: IBM上的IoT基金会出现未经授权的错误。
我将非常感谢在这方面的任何帮助!
发布于 2016-08-26 15:51:56
初学者应用程序中有一部分Node.js代码直接订阅通知主题。该订阅尝试是否产生了auth错误?如果是,您是否修改了代码的这一部分以传递凭据?
下面是我所指的app.js中的代码行。
var clientId = 'geo-quickstart:' + port;
//create the MQTT client and subscribe
client = mqtt.createClient(1883,"mqtt1.m2m4connectedlife.com", { "clientId": clientId } );
console.log("Subscribing to topic: " + notify_topic_string + "\n");
client.subscribe(notify_topic_string);如果您没有在createClient调用上传递凭据,请尝试向参数列表中添加一个参数{username:"user“、password:"pass"}。
发布于 2016-08-26 12:09:50
使用API键建立MQTT连接时,请确保应用以下要点:
The MQTT client ID is in the format: a:orgId:appId
The MQTT user name is the API key: such as a-orgId-a84ps90Ajs
The MQTT password is the authentication token: such as MP$08VKz!8rXwnR-Q*有关更多细节,请参见文档。如果您仍然遇到错误,请让我们知道IoT服务的6个字符的org ID,我们可以检查日志以解决您为什么要获得授权错误的问题。
https://stackoverflow.com/questions/39143190
复制相似问题