如何将 Cognito 与生成的 Javascript SDK 一起使用

How do I use Cognito with the generated Javascript SDK?

本文关键字:SDK Javascript 一起 Cognito      更新时间:2023-09-26

我找不到任何显示如何执行此操作的文档,所以我尽力弄清楚(这不是一个常见的用例)?我已将资源设置为使用 IAM 身份验证、设置 CORS 等。然后我部署了它,并下载了生成的 SDK。

在客户端,我使用的是来自 AWS 的凭证。CognitoIdentityCredentials with apigClientFactory.newClient.当我尝试发布到我的资源时,我收到没有正文的 403 错误响应。

响应标头包含:x-amz-ErrorType: UnrecognizedClientException

此错误可能来自其他AWS服务(它们是否像那样冒泡)?如果是这样,我怎么知道是哪一个?还有什么可能导致错误?

我在测试测试客户端使用的代码如下所示:

function onFacebookLogin(fbtoken) {
  // get cognito credentials
  AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'us-east-1:abcd6789-1234-567a-b123-12ab34cd56ef',
    Logins: {'graph.facebook.com': fbtoken}
  });
  AWS.config.credentials.get(function(err) {
    if (err) {return console.error('Credentials error: ', err);}
    /* I'm assuming that this is what I use for accessKey and secretKey */
    var credentials = AWS.config.credentials;
    apigClient = apigClientFactory.newClient({
      accessKey: credentials.accessKeyId,
      secretKey: credentials.secretAccessKey
    });
  });
}

我认为可能发生的情况是您没有使用访问密钥和私有密钥设置 sessionToken 字段。您可以尝试将其设置为类似于以下示例,看看是否有效吗?

var client = apigClientFactory.newClient({    访问密钥:ACCESS_KEY,    密钥:SECRET_KEY,    会话令牌:SESSION_TOKEN});

如果需要,前面的问题有更详细的信息。

是的,我相信sessionToken是必需的。

下面是使用未经身份验证的认知身份的基本示例:https://github.com/rpgreen/aws-recipes/blob/master/app/index.html