好日子FB用户的数据,充分利用AWS“CognitoIdentityCredentials”使用Facebook的登录
我有一个API设置,它坐在后面AWS的APIGateway,与IAM安全,在这种情况下,它是一个Cognito联合ID池。
我有以下代码:
function doFacebookLogin() {
FB.login(function (response) {
fbAuthToken = response.authResponse.accessToken;
doFetchProfile();
}, {scope: 'public_profile,email', return_scopes: true});
}
function doFetchProfile() {
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'eu-west-1:*****************************',
Logins: {
'graph.facebook.com': fbAuthToken
}
});
// Obtain AWS credentials
AWS.config.credentials.get(function() {
apigClient = apigClientFactory.newClient({
accessKey: AWS.config.credentials.accessKeyId,
secretKey: AWS.config.credentials.secretAccessKey,
sessionToken: AWS.config.credentials.sessionToken,
region: 'eu-west-1'
});
apigClient.userProfileGet({
'x-fb-access-token': fbAuthToken
}).then(function (data) {
console.log(data);
});
});
}
现在,我送了Facebook的accessToken的头,因为我的服务器(坐在后面的AWS APIGateway)需要访问该用户的Facebook个人资料。
我希望只需登录Cognito Federated ID池,使用Facebook提供程序就足以让AWS的APGateway SDK随每个请求一起传递accessToken(以某种形式或另一种形式)。
似乎并不是这样,我无法找到一种方法来提取我需要的Facebook数据,而无需像上面的示例那样在头中发送AccessToken。
我在理解什么应该发生错误吗?
感谢提前:)
嗨,杰克,谢谢你的回应。根据我的问题中的代码,我正在使用Cognito联合登录。 (除非我不是,但我认为我是?)。因此我可以访问受IAM保护的资源。 我的基本问题是“我将如何访问Facebook的凭据,而不发送Facebook访问令牌,只是使用cognito”。 AWS Cognito此后添加了我正在探索的联合ID映射部分。 – LukeStoneHm