0

好日子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。

我在理解什么应该发生错误吗?

感谢提前:)

回答

0

如果你落后API网关服务器需要Facebook的访问令牌访问某些Facebook的API的,然后是你永远需要令牌通过通过Facebook的访问帮助API GW。

Cognito联合登录允许您交换Facebook令牌以获取AWS凭据以访问受AWS保护的服务。

+0

嗨,杰克,谢谢你的回应。根据我的问题中的代码,我正在使用Cognito联合登录。 (除非我不是,但我认为我是?)。因此我可以访问受IAM保护的资源。 我的基本问题是“我将如何访问Facebook的凭据,而不发送Facebook访问令牌,只是使用cognito”。 AWS Cognito此后添加了我正在探索的联合ID映射部分。 – LukeStoneHm