配置 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 格式的地址。

有什么解决办法吗?

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

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

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

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

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

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

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