我正在尝试从与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.