本地主机上 Cognito 托管 UI 的 Facebook 登录设置

Posted

技术标签:

【中文标题】本地主机上 Cognito 托管 UI 的 Facebook 登录设置【英文标题】:Facebook login setup for Cognito hosted UI on localhost 【发布时间】:2018-11-19 11:47:06 【问题描述】:

我正在尝试使用 AWS Cognito 托管 UI 来允许用户使用 Facebook 登录用户池。我希望能够在我的本地开发环境中进行身份验证。我的问题是我似乎无法找出正确的 URL 来指定使事情在 localhost:3000 上运行。

我尝试了很多组合,但我似乎不断收到“无法加载 UL”错误:

在前端,我使用 aws-amplify-reactwithOAuth 函数来利用加载托管 UI 的函数:

import React, Component from 'react';
import Amplify from 'aws-amplify';
import  withOAuth  from 'aws-amplify-react';

const oauth = 
    domain: 'my-app-client-domain.auth.us-east-1.amazoncognito.com',
    scope: [
        'phone', 'email', 'profile', 'openid', 'aws.cognito.signin.user.admin'
    ],
    redirectSignIn: 'https://localhost:3000/authenticated',
    redirectSignOut: 'https://localhost:3000/logout',
    responseType: 'code'

Amplify.configure(
    Auth: 
        oauth: oauth
    
);

class LoginButton extends Component 
    render() 
        return (<LoginButtonContainer>
            <LoginButton onPress=this.props.OAuthSignIn>Log in</LoginButton>
        </LoginButtonContainer>);
    

export default withOAuth(LoginButton);

我的 Facebook 应用设置在“设置 -> 基本”下如下所示:

应用域: my-app-client-domain.auth.us-east-1.amazoncognito.com

网站网址: https://my-app-client-domain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse

在“产品 -> Facebook 登录 -> 设置”下:

有效的 OAuth 重定向 URI:https://localhost:3000/authenticated

AWS 控制台中我的用户池设置为:

在“应用集成 -> 应用客户端设置”下:

显然,我还将应用集成域名设置为“my-app-client-domain”,并且我在“Federation -> Identity providers”下设置了我的 facebook 应用

所以,总而言之,我目前有以下 URL 设置:

前端应用 :my-app-client-domain.auth.us-east-1.amazoncognito.com redirectSignIn:https://localhost:3000/authenticated redirectSignOut:https://localhost:3000/logout Facebook 设置 应用程序域: my-app-client-domain.auth.us-east-1.amazoncognito.com 网站网址: https://my-app-client-domain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse 有效的 OAuth 重定向 URIs:https://localhost:3000/authenticated AWS 用户池设置: 回调网址: https://my-app-client-domain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse, https://localhost:3000/authenticated 退出网址: https://my-app-client-domain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse, https://localhost:3000/logout 域前缀: my-app-client-domain

我的任何设置是否看起来有问题,或者可能与我设置错误的实际 URL 无关?

【问题讨论】:

【参考方案1】:

结果,不出所料,我的问题完全不相关。我在 AWS 中为我​​的身份提供商设置了错误的 Facebook 应用程序 ID,所以如果您遇到此问题,值得仔细检查。

话虽如此,但缺乏有关设置 Facebook 应用程序以与 Cognito 一起使用的文档是让我陷入困境的原因。另外,我也确实需要更新我的 URL 设置,所以以下是最终对我有用的设置:

前端应用 :my-app-client-domain.auth.us-east-1.amazoncognito.com redirectSignIn:https://localhost:3000/authenticated redirectSignOut:https://localhost:3000/logout Facebook 设置 应用程序域: localhost 网站网址: https://localhost:3000/ 有效的 OAuth 重定向 URIs:https://my-app-client-domain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse AWS 用户池设置: 回调网址: https://localhost:3000/authenticated 退出网址: https://localhost:3000/logout 域前缀: my-app-client-domain

【讨论】:

developers.facebook.com/docs/facebook-login/security/… "2018 年 10 月 6 日,所有应用都必须使用 HTTPS。"

以上是关于本地主机上 Cognito 托管 UI 的 Facebook 登录设置的主要内容,如果未能解决你的问题,请参考以下文章

Cognito 托管 UI

AWS Cognito托管UI - 国际化

在 Cognito 托管 UI 中添加指向条款和条件的链接

cognito 托管 UI 中的可选标识符不起作用

如何在本地主机上托管Office插件?

如何利用 AWS Cognito 托管 UI 进行授权代码授予流程