使用IAM从Android MQTT客户端登录AWS IoT无法正常工作

时间:2017-05-22 13:18:28

标签: android amazon-web-services mqtt iot aws-iot

我一直在尝试将我的Android应用程序连接到AWS IoT门户。我创建了一个IAM帐户,其中包含用户名和密码。我已经阅读了文档但我看不到任何正确的指南。我在某处读到了我可以通过IAM / Cognito /使用证书访问IoT设备。由于我是Android用户,我不能(我不想)使用设备证书。我可以使用我的IAM凭证来访问我的AWS IoT设备吗?我已下载所有示例应用程序,但找不到任何正常工作的代码。或者有人可以解释我如何从Android应用程序访问AWS IoT门户网站?

2 个答案:

答案 0 :(得分:2)

查看您的意见和问题。使用AndroidPubSubWebSocket时遇到了类似的问题。确保您具有相应的权限,以发布和订阅AWS在Github repo指令中给出的内容。假设已经完成。

  1. Github AndroidPubSuB中提供的示例仅适用于未经身份验证的用户。对于经过身份验证的用户(此处为Facebook),必须在AWS端和Android端添加一些内容
  2. <强>的Android

    Map<String, String> logins = new HashMap<String, String>();
            logins.put("graph.facebook.com", AccessToken.getCurrentAccessToken().getToken());
            credentialsProvider.setLogins(logins);
    

    上述代码是必要的,因为AwsCredentialProvider使用它来验证用户是否发布和连接到该东西。

    完成上面的here之后。按照Caleb的回答进行确切的步骤。

    在此之后,你很高兴。

    1. 对于未经身份验证的,用户在AWS中为用户和区域创建一个池。得到事情的终点。进行适当的更改。
    2. 要获取对阴影类型的更改,请在示例android(WebSocketAwsOubSub)编辑框$aws/things/thing_name/shadow/update/accepted

      中进行以下操作

      将数据发布到阴影类型$aws/things/thing_name/shadow/update

答案 1 :(得分:1)

示例应用程序有一些常量,您需要用自己的值替换,例如cognito池Id,您的IoT端点。在IAM中,您还需要提供适当的IoT权限,以便您的应用可以连接到IoT并进行发布/订阅。您使用哪个示例应用程序?您在哪个特定步骤有疑问?

感谢。