此身份池不支持未经身份验证的访问

Unauthenticated access is not supported for this identity pool

错误是: com.amazonaws.services.cognitoidentity.model.NotAuthorizedException:此身份池不支持未经身份验证的访问。 (服务:AmazonCognitoIdentity;状态代码:400;错误代码:NotAuthorizedException;

请帮帮我。 登录过程成功,当我输入 Amazon lex 聊天机器人 window 时,我收到上述错误 此身份池不支持未经身份验证的访问。 这实际上是有道理的,因为我没有检查对我的 bot 的未经身份验证的访问,所以我知道如果没有身份验证,将不允许任何用户与 Lex ChatBot 交互。但是现在我登录成功了,但我仍然有这个错误。

我的问题是我们需要维护已登录的用户会话吗??如果是,我该怎么做。

我如何 link 登录到 Cognito 身份验证。

当身份池禁用未经身份验证的访问并且在应用程序的登录映射中找不到 ID 令牌时,我们会收到此错误。例如,在 Android 应用程序中,初始化 CognitoCachingCredentialsProvider 后,您还需要调用 setLogins() 方法并提供登录映射。

//Relevant imports
import com.amazonaws.auth.CognitoCachingCredentialsProvider;
import com.amazonaws.regions.Regions;

//Initialize credentials provider
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
  getApplicationContext(),
  "IDENTITY_POOL_ID", 
  Regions.US_EAST_1 
);

//Create a login map
Map<String, String> logins = new HashMap<String, String>();
logins.put("www.amazon.com", "login with Amazon token");

//Set login map
credentialsProvider.setLogins(logins);
credentialsProvider.getCredentials();

//Create clients for AWS services with credentialsProvider as a parameter in the constructor

在上面的例子中,我假设使用了'Login with Amazon'。对于不同的提供商,使用适当的令牌更改密钥 "www.amazon.com"。要知道密钥,只需解码 https://jwt.io 处的 id 令牌并查找 iss 声明。不带 https:// 的值将作为登录映射的键。

至于将此代码放在哪里,请检查它是否在任何地方使用 CognitoCachingCredentialsProvider 对象,然后向其添加登录映射。要强制刷新凭据,请调用 refresh() 方法

对于 aws amplify 启用多验证

最后, 你想现在编辑你的添加到组功能吗? (Y/n) n