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

如何将Cognito与生成的Javascript SDK一起使用?,javascript,amazon-web-services,amazon-cognito,aws-api-gateway,aws-lambda,Javascript,Amazon Web Services,Amazon Cognito,Aws Api Gateway,Aws Lambda,我找不到任何说明如何做到这一点的文档,所以我尽了最大的努力来解决它(这不是一个常见的用例吗)?我已经将我的资源设置为使用IAM身份验证、设置CORS等。然后我部署了它,并下载了生成的SDK 在客户端,我使用来自AWS.CognitoIdentityCredentials和apigClientFactory.newClient的凭据。当我试图发布到我的资源时,我得到一个403错误响应,没有正文 响应头包含:x-amz-ErrorType:UnrecognizedClientException 这个

我找不到任何说明如何做到这一点的文档,所以我尽了最大的努力来解决它(这不是一个常见的用例吗)?我已经将我的资源设置为使用IAM身份验证、设置CORS等。然后我部署了它,并下载了生成的SDK

在客户端,我使用来自AWS.CognitoIdentityCredentials和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({ accessKey: ACCESS_KEY, secretKey: SECRET_KEY, sessionToken: SESSION_TOKEN }); var client=apigClientFactory.newClient({ accessKey:ACCESS\u键, 秘密密钥:秘密密钥, sessionToken:会话\u令牌 });
如果需要的话,上一个问题有更详细的内容。

是的,我认为需要进行sessionToken


下面是一个使用cognito未经验证身份的基本示例:

是的,这是sessionToken。总是一些平凡的细节:-)