AWS-Amplify:此身份池不支持未经身份验证的访问

时间:2018-09-04 13:35:40

标签: react-native aws-amplify cognito

我正在使用:https://github.com/aws-amplify/amplify-js

有没有可行的示例,如何使用对AWS的身份验证访问?我正在使用这个:

Amplify.configure({
        Auth: {
            identityPoolId: configs.broker.identityPoolId,
            region: configs.broker.aws_pubsub_region,
            userPoolId: configs.broker.userPoolId,
            userPoolWebClientId: configs.broker.userPoolWebClientId,
        }
});

Amplify.addPluggable(new AWSIoTProvider(configs.broker));

Auth.signIn(configs.broker.username, configs.broker.password)
    .then(user => {                
        resolve({ code: 200, message: 'Authorized access to AWS is used' })
    })
    .catch(singInErr => resolve({ code: 500, message: singInErr.message }));

如果可以(可以):

    PubSub.publish(configs.broker.topic, JSON.stringify(data))
         .then(res => resolve({
              code: 200,
              message: 'OK'
         }))
         .catch(err => resolve({
              code: 500,
              message: err.toString()
         }));

但我不断得到:

[未处理的承诺拒绝:NotAuthorizedException:此身份池不支持未经身份验证的访问。]

1 个答案:

答案 0 :(得分:1)

您是否使用amplify-cli设置了身份验证?我对graphql和cognito也有类似的问题。通过转到标识池设置并设置Unauthenticated roleAuthenticated role来解决此问题。我刚刚使用了使用cli cli创建的内容。

我正试图从内存中调出这个名称,因此可能缺少某些部分。但是粗略的步骤是:

  1. 转到https://eu-west-1.console.aws.amazon.com/cognito/federated
  2. 从顶部栏中选择您所在的区域。
  3. 如果您有身份池,则应该看到一个表。在其上方有一个指向其设置的链接。点击。
  4. Support下的右上角是Edit Identity Pool。点击。
  5. 您应该看到一个包含两个选项Unauthenticated roleAuthenticated role的屏幕。单击选择框,然后选择适当的角色。如果创建了放大堆栈,则它应该具有两个角色,分别用词unauthdRoleauthRole来选择。

现在应该可以工作了。假设您具有正确的身份池和用户池设置。

相关问题