# 在 Discourse 中配置 Google 登录 （Google login）

**URL:** <https://www.isharkfly.com/t/discourse-google-google-login/13582>\
**Category:** Discourse\
**Tags:** discourse\
**Created:** [July 19, 2021, 5:56pm UTC](https://www.isharkfly.com/t/discourse-google-google-login/13582 "2021-07-19T17:56:12Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [July 19, 2021, 5:56pm UTC](https://www.isharkfly.com/t/discourse-google-google-login/13582/1 "2021-07-19T17:56:12Z")

</div>

这篇文章展示了如何在 Discourse 中配置注册使用 Google OAuth2 来进行登录。

## Google 控制台配置

进入 [https://console.developers.google.com](https://console.developers.google.com/)，然后再左上方单击 **选择一个项目（Select a project）** 。

![image](https://www.isharkfly.com/images/transparent.png)

## 新项目

在顶部的右侧，单击 **新项目（New Project）** 。

![image](https://www.isharkfly.com/images/transparent.png)

## 输入项目信息

在 **项目名称（Project Name）** 字段中输入项目的名称，你也可以对 \*\*项目 ID（Project ID）\*\*来进行编辑。

对项目编辑 ID 的编辑是可选的，随后单击 **创建（Create）** 。

这个操作可能需要耗费一些时间，因此你可能需要耐心的等候一下。

![image](https://www.isharkfly.com/images/transparent.png)

### 创建错误

在创建的过程中，可能会出现创建错误。  
针对这种情况，你可以选择忽略掉创建的错误，然后单击 Ctrl+F5 来进行刷新。

![image](https://www.isharkfly.com/images/transparent.png)

### 提交校验

请按照 [https://support.google.com/cloud/answer/9110914#submit-app-ver](https://support.google.com/cloud/answer/9110914#submit-app-ver) 链接中的说明，将你的项目提交给 Google Cloud Platform 平台进行校验。

## 创建外部链接

在你的项目中，选择当前项目的名字，然后在左侧控制面板中单击 **OAuth consent screen** 菜单，然后选择 **External** ，随后宕机 Create按钮

![image](https://www.isharkfly.com/images/transparent.png)

## 填写所有数据

我们建议你完全填写完成所有的数据后再单击 Save 按钮进行保存。

在示例中，我们假设我们的域名为 `https://demo.site.com`，请确定你输入的 URL 中有 `https` 或者 `http` 的协议开头。

ℹ 从 2021/09/13 (September 13) 开始， Google 将会要求所有访问 Google 服务的网站都需要使用 https。

针对 **Application logo** 不需要进行修改，当然你也可以上传你自己的 logo，随后 Google 将会对站点进行校验。

![image](https://www.isharkfly.com/images/transparent.png)

![image](https://www.isharkfly.com/images/transparent.png)

## Credentials

随后需要创建 Credentials，进入左侧的 **Credentials** 标签页，然后单击 + CREATE CREDENTIALS 按钮，随后选择 **OAuth client ID** 来进行创建

![image](https://www.isharkfly.com/images/transparent.png)

## 选择类型

在随后的界面中，选择 _Application Type_ 的授权类型为 **Web application** 。

在 _Authorized JavaScript Origins_ 界面中，添加你的网站 URL，需要注意的是这个网站的 URL 需要以 `http://` 或者 `https://` 开头。

在 _Authorized Redirect URI_ 部分，需要在你前面输入的 URL 后面添加 `/auth/google_oauth2/callback`。

然后单击 Create 按钮来进行创建。

ℹ 需要注意的是，从 2021/09/13 (September 13) 开始， Google 将会要求所有访问 Google 服务的网站都需要使用 https。因此你的 Discourse 网站需要尽量使用 https。

![firefox_2020-03-12_19-04-54](https://www.isharkfly.com/images/transparent.png)

## 获得秘钥对

在 OAuth 客户端对话框中将会显示 client ID 和 secret。

![image](https://www.isharkfly.com/images/transparent.png)

## 查看秘钥对（可选）

这一步的操作是可选的，现在从你的项目中，单击 **Credentials** 选项，你便可以找到 OAuth 秘钥来进行编辑或者删除。

## Discourse 配置

在你的 Discourse 配置中，单击 `enable google oauth2 logins`，然后输入你在上面的步骤中获得的 `google oauth2 client id` 和 `google auth2 client secret`。

并且将上面的秘钥对输入到正确的配置对话框中。

至此，针对 Google 的登录配置应该配置完成了。

你可以通过 Discourse 的前端来来进行测试。

### Tips

针对启用 Gsuite 登录的配置，请使用配置参数 `google oauth2 hd`。有关更多的内容，请访问[这里](https://developers.google.com/identity/protocols/OpenIDConnect#hd-param)。

ID token 将会被 [Discourse](https://github.com/zquestz/omniauth-google-oauth2/blob/master/lib/omniauth/strategies/google_oauth2.rb#L213-L224) 进行校验，上面的链接就是 Discourse 进行校验的源代码。

---

<div class="post-metadata">

**Author:** ![Ava](https://www.isharkfly.com/user_avatar/www.isharkfly.com/ava/32/15917_2.png) [@Ava](https://www.isharkfly.com/u/Ava)\
**Post date:** [November 22, 2024, 4:38pm UTC](https://www.isharkfly.com/t/discourse-google-google-login/13582/2 "2024-11-22T16:38:15Z")

</div>

> [@honeymoose](#):
>
> 配置注册使用 Google OAuth2 来进行登录

老大，我觉得这篇需要更新了，好多是旧内容，

比如范围如何选择也没写，现在给的权限好多，不懂需要选择那个。。。

---

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [November 22, 2024, 5:30pm UTC](https://www.isharkfly.com/t/discourse-google-google-login/13582/3 "2024-11-22T17:30:26Z")

</div>

> [@Ava](#):
>
> 不懂需要选择那个

我们还是用的 Google 老的。

刚才也测试了下，正常登录也没有问题。

能不能你在配的时候把出现的问题发布下？

我们也好有针对性的更新。
