7

我正在为已经使用 AWS Cognito 用户池的 Angular2 应用程序实施 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));
      }

但是现在:如何将 Facebook 用户与现有的用户池集成?

有用于登录和注册用户池的功能,最佳解决方案显然也是为 Facebook 用户使用现有功能。

后端是无服务器的(Lambdas/API 网关),并使用连接到现有用户池的 Authorizer。

4

3 回答 3

3

首先,如前所述,Cognito UserPool没有与社交身份提供商集成。但是,您可以使用您选择的数据库,自己从 Federated Identities 实现社交帐户用户(facebook、google 等)的目录。看看这个讨论。

其次,现在您不必执行本文第一部分中描述的操作。几天前,亚马逊宣布通过 Facebook、谷歌和 LoginWithAmazon 支持用户池联盟。“当用户使用联盟登录时,这将在用户池中创建一个用户。您还可以使用属性映射功能从身份提供者那里捕获属性。” -这里也提到了这一点。

于 2017-08-16T08:38:30.517 回答
1

不幸的是,Cognito UserPool 没有与 Facebook、Twitter、Google 等社交身份提供商集成。这仅在 Cognito Federated Identities 中受支持。我们很高兴将此作为功能请求。

于 2017-06-09T23:51:41.333 回答
-2

而不是.refresh打电话.get

喜欢:

AWS.config.credentials.get((error) => ...
于 2017-05-31T00:43:49.323 回答