访问使用Cognito与JavaScript连接的AWS API网关

我正在尝试从与Facebook连接的用户访问我的AWS API网关.

首先,我尝试使用带有简单用户池的Cognito(没有Facebook登录),我的用户可以通过发送用户名和密码登录,Cognito发回给我一个accessToken,我用它来浏览我的API的自动化器然后访问到我的控制器.一切正常.

然后,我想使用Facebook连接到我的API.所以我这样做了:

AWS.config.region = 'eu-west-1';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: {myIdentityPoolId},Logins: {
           'graph.facebook.com': {myFacebookToken}
         }
    });

AWS.config.credentials.get(function(err) {
    if (err)
        console.log(err);
    else {
        console.log("Cognito accessKeyId ", AWS.config.credentials.accessKeyId);
        console.log("Cognito secretAccessKey ", AWS.config.credentials.secretAccessKey);
        console.log("Cognito sessionToken ", AWS.config.credentials.sessionToken);
        console.log("Cognito Identity Id ", AWS.config.credentials.identityId);
    }
 });

一切似乎都很好,我收到了accessKeyId,secretAccessKey,sessionToken,一个身份ID,但是我接下来要访问我的API.

在我的API配置中,我无法仅使用用户池创建授权程序,而不能使用联合实体创建授权程序.

实际上我不明白联邦实体的目的.
如果有人可以帮助我或给我一个很好的Facebook连接的基本例子.

谢谢 !

最佳答案 这个问题已在
this帖子中得到了相当准确的回答.如上所述,您必须在API网关中使用IAM_AUTH,并使用您从Cognito Identity获得的令牌来签署您的请求.有关如何签署请求的更多信息是
here.

谢谢! Ritisha.

点赞