配置 Discourse 的 Google 登录

:bookmark: 本指南说明如何通过在 Google Cloud Console 中配置 OAuth2 凭据,为您的 Discourse 站点设置 Google 登录集成。

:person_raising_hand: 所需用户级别:管理员

概述

Google 登录允许用户使用其 Google 帐户登录您的 Discourse 站点。本指南将引导您完成以下步骤:

  1. 创建一个 Google Cloud 项目
  2. 设置 OAuth 同意屏幕
  3. 配置凭据
  4. 在 Discourse 中启用 Google 登录

创建 Google Cloud 项目

  1. 导航至 https://console.developers.google.com
  2. 点击左上角的项目选择按钮
  3. 点击“新建项目”

  1. 输入项目名称和可选位置。
  2. 点击“创建”

:information_source: 如果在创建项目后看到任何错误,请使用 Ctrl+F5 刷新页面。

配置 OAuth 同意屏幕

  1. 导航回 https://console.developers.google.com,如果尚未选择,请选择您的新项目。
  2. 在左侧面板中导航到“OAuth 同意屏幕”。您也可以使用左上角的 Google Cloud 菜单选择“API 和服务”->“OAuth 同意屏幕”。

  1. 点击“开始使用”
  2. 在“应用信息”下,输入应用名称并选择一个用户支持电子邮件地址。

  1. 选择“面向外部”受众群体

  1. 接下来,输入通知电子邮件地址
  2. 最后,接受 API 服务:用户数据政策并点击“创建”

设置凭据

  1. 导航到“API 和服务”->“凭据”屏幕
  2. 点击“创建凭据”并选择“OAuth 客户端 ID”

  1. 配置 OAuth 客户端:
  • 将“应用类型”选择为“Web 应用程序”并为其命名
  • 在“授权的 JavaScript 源”中,添加您站点的基本网址(包括 https://)
  • 在“授权的重定向 URI”下,添加您的回调网址:https://your-discourse-site.com/auth/google_oauth2/callback
  • 点击“创建”

点击 OAuth 2.0 客户端 ID:

将 ClientID 和 Client Secret 复制到您的 Discourse 管理员设置中:

配置 Discourse 设置

  1. 在您的 Discourse 管理员设置中,“登录与身份验证”下
  • 启用 enable google oauth2 logins(启用 Google OAuth2 登录)设置
  • 输入您的 google oauth2 client id(Google OAuth2 客户端 ID)
  • 输入您的 google oauth2 client secret(Google OAuth2 客户端密钥)

验证和发布

通过添加一个具有 Google 电子邮件地址的用户并确认您可以使用“使用 Google 登录”选项登录 Discourse 来测试集成。如果您能够登录,则配置完成!:tada:

:warning: 注意:

以前需要最后一步——将 Google 开发者项目更改为“生产”状态。这似乎不再需要。我们在此保留这些遗留说明,以防万一。

要使集成可公开访问:

  • 将状态更改为“生产”
  • 完成 Google 的验证过程
  • 通过 Google Search Console 验证网站所有权

附加配置

Google OAuth2 提示

google oauth2 prompt(Google OAuth2 提示)设置控制登录期间 Google 同意屏幕的行为。可用选项:

  • (空白) — 默认 Google 行为
  • none — 不显示同意或帐户选择屏幕
  • consent — 始终显示同意屏幕
  • select_account — 始终提示用户选择一个帐户

Google Workspace(以前的 G. Suite、Google Apps)登录

要将登录限制为特定的 Google Workspace 域名:

  1. 在 Discourse 管理员 -> 登录与身份验证中,找到 google oauth2 hd 站点设置
  2. 输入您的 Google Workspace 域名

Google Workspace 组同步

您可以自动将 Google Workspace 组与 Discourse 同步。这需要:

  1. 启用 google oauth2 hd groups 设置
  2. 将 google oauth2 hd 设置为您的工作区域名
  3. 在 google oauth2 hd groups service account admin email(Google OAuth2 组服务帐户管理员电子邮件)中输入工作区管理员电子邮件
  4. 将您的 Google 服务帐户 JSON 凭据粘贴到 google oauth2 hd groups service account json 中

服务帐户必须启用域级委托,并被授予 https://www.googleapis.com/auth/admin.directory.group.readonly 范围。请参阅Google 关于域级委托的文档以获取设置说明。

故障排除

如果您遇到登录问题:

  • 验证 HTTPS 是否正确配置
  • 仔细检查所有重定向 URI
  • 确保您站点的 SSL 证书有效
  • 确认所有必需的 Google Cloud API 已启用
  • 启用 google oauth2 verbose logging(Google OAuth2 详细日志记录)以获取详细的 OAuth2 请求/响应日志

相关资源

165 個讚

很遗憾,如果我遵循这些说明,登录将无法正常工作。

为了让登录生效,我必须同时添加两种 URL 格式用于重定向。

https://forum.example.com//auth/google_oauth2/callback http:///forum.example.comauth/google_oauth2/callback

但是,我现在无法提交应用程序以供发布,因为 Google 只要求 HTTPS 格式的地址。

有什么解决办法吗?

1 個讚

我猜你没有标准安装,需要开启 force_https。

我遵循了官方安装说明。强制 HTTPS 已启用。

编辑:很奇怪,但现在它开始工作了!我之前尝试了至少十次,但都没有成功。

我无法解释,因为过程完全相同。也许是谷歌方面的原因?

:person_shrugging: 它通过 http 访问 Google 是没有意义的。

帖子已拆分为新主题:Google 登录回归,可能是在最近的更改之后

你好,谢谢,我今天设置了该程序,它运行正常。我用我拥有的另一个 Google 帐户进行了测试。但是,我有一个小问题,我尝试从我的 PC 使用此其他 Google 帐户注册,并且只收到了访问密钥选项。我必须激活蓝牙才能与我的手机通信。嗯,这一切根本不起作用。我真正想做的是单击“使用 Google 登录”按钮,然后通过简单地填写表单来完成该过程,而无需使用访问密钥。我在我的 PC 上,不一定有访问密钥,也没有指纹。如果我想使用此过程,在不在手机上时使用 Google 注册,该怎么办?谢谢。