将 Flutter app facebook 身份验证与 Keycloak 服务集成

Posted

技术标签:

【中文标题】将 Flutter app facebook 身份验证与 Keycloak 服务集成【英文标题】:Integrating Flutter app facebook authentication with Keycloak service 【发布时间】:2020-04-18 07:19:21 【问题描述】:

我有一个使用 Keycloak 作为身份验证服务的 Flutter 应用。 目前我只允许电子邮件+密码登录,我想为用户添加使用 Facebook 登录的选项。

我的问题是如何将 facebook 登录与我的 Keycloak 服务链接起来,以便我的服务可以管理访问令牌。

我发现这个非常好的用于 Flutter facebook 登录的库:https://pub.dev/packages/flutter_facebook_login

我在应用程序和 Keycloak 服务之间使用 Java Spring Web 服务代理。 我正在为 Keycloak 客户端使用 org.keycloak:keycloak-admin-client:6.0.1 库。

我想了解应该发生的控制流程,以便用户可以登录到他的 facebook 帐户,然后我的 Keycloak 服务将管理它的访问令牌,以便我可以在我的其他服务中验证用户,这些都是依赖于 Keycloak 验证访问令牌这一事实。

任何建议都会有所帮助,谢谢!

【问题讨论】:

【参考方案1】:

Keycloak 有一个内置的 Facebook 身份提供程序,可以很容易地做到这一点。这是 Keycloak 文档的链接,其中逐步设置了它: https://www.keycloak.org/docs/6.0/server_admin/#facebook

这是文档中列出的步骤(复制并稍作修改,因为我没有在此处发布任何图片)。

*** 来自 KEYCLOAK 文档 **

您必须完成多个步骤才能启用 Facebook 登录。首先,转到 Identity Providers 左侧菜单项,然后从 Add provider 下拉列表中选择 Facebook。这将带您进入“添加身份提供者”页面。

您还不能点击保存,因为您需要从 Facebook 获取客户端 ID 和客户端密码。您需要从此页面获取的一项数据是重定向 URI。当您将 Keycloak 注册为 Facebook 客户端时,您必须将其提供给 Facebook,因此请将此 URI 复制到剪贴板。

要启用 Facebook 登录,您首先必须在 Facebook 开发者控制台中创建一个项目和一个客户端。

登录控制台后,屏幕右上角会出现一个下拉菜单,其中显示“我的应用程序”。选择添加新应用菜单项。

选择一个平台。点击跳过并创建 App ID 按钮。

电子邮件地址和应用类别是必填字段。完成后,您将被带到应用程序的仪表板。单击设置左侧菜单项。

单击此页面末尾的 + 添加平台按钮并选择网站图标。将 Keycloak 添加身份提供者页面中的重定向 URI 复制并粘贴到 Facebook 网站设置块的站点 URL。

在此之后,有必要公开 Facebook 应用程序。单击 App Review 左侧菜单项并将按钮切换到“是”。

您还需要从此页面获取 App ID 和 App Secret,以便将它们输入到 Keycloak 添加身份提供者页面。要获得此信息,请单击 Dashboard 左侧菜单项,然后单击 App Secret 下的 Show。返回 Keycloak 并指定这些项目,最后保存您的 Facebook 身份提供程序。

在 Facebook 的“添加身份提供者”页面上要注意的一个配置选项是“默认范围”字段。此字段允许您手动指定用户在使用此提供程序进行身份验证时必须授权的范围。有关范围的完整列表,请查看https://developers.facebook.com/docs/graph-api。默认情况下,Keycloak 使用以下范围:电子邮件。

【讨论】:

欢迎提供解决方案的链接,但请确保您的答案在没有它的情况下有用:add context around the link 这样您的其他用户就会知道它是什么以及为什么会出现,然后引用最相关的内容您链接到的页面的一部分,以防目标页面不可用。 Answers that are little more than a link may be deleted. 该链接将逐步引导您了解如何将 Facebook 设置为身份提供者。提供文档链接可确保如果 Keycloak 更新此过程,则解决方案也会更新。 我知道,但即使您不阅读链接也请理解 我已经用有关如何解决问题的相关信息更新了答案。我还强烈建议您查看 Keycloak 的文档以查找最新信息。

以上是关于将 Flutter app facebook 身份验证与 Keycloak 服务集成的主要内容,如果未能解决你的问题,请参考以下文章

将Flutter应用程序的Facebook身份验证与Keycloak服务集成在一起

Flutter:如何配置 Facebook 进行身份验证

flutter_facebook_auth:提供的身份验证凭据格式错误或已过期

通过 Facebook 进行 Flutter 和 Firebase 身份验证:与设备的连接丢失

如何使用颤振在 django 中进行 google、facebook 身份验证

Facebook 登录当前无法在 Flutter 中用于此应用