我正在为已经使用AWS Cognito用户池的Angular2-app实施Facebook身份验证。
使用ngx-facebook(https://github.com/zyra/ngx-facebook),我设法使用Facebook和Cognito身份池对自己进行身份验证:
loginWithFacebook(): void {
AWS.config.update({region:AWS_CONFIG.REGION});
this.fb.login()
.then((response: LoginResponse) => {
console.log(response.authResponse.accessToken);
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: AWS_CONFIG.IDENTITY_POOL_ID,
Logins: {
'graph.facebook.com': response.authResponse.accessToken
}
});
AWS.config.credentials.refresh((error) => {
if (error) {
console.error(error);
} else {
console.log('Successfully logged in');
}
});
})
.catch((error: any) => console.error(error));
}
Run Code Online (Sandbox Code Playgroud)
但是现在:如何将Facebook用户与现有用户池集成在一起?
有用于登录和注册用户池的功能,最佳的解决方案显然是对Facebook用户也使用现有功能。
后端是无服务器的(Lambdas / API网关),并使用连接到现有用户池的授权器。
我创建了一个用户投票并将 Facebook 连接到它。这是 AWS 控制台中的样子。
我还设置email为注册所需的属性。
但是,当我访问我的托管登录页面并单击 时Continue with Facebook,我会通过 URL 重定向回我的页面
http://localhost:4200/#error_description=attributes%20required:%20[email]&error=invalid_request
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我已按照所有说明进行操作,并将其email作为范围包含在内。我期待access_token在 URL 中。
请帮忙。谢谢!