Перейдите в раздел «IAM и администрирование» → «Учетные записи служб» → «Создать учетную запись службы» и настройте её. Два дополнительных шага не обязательны — пропустите их.
В списке учетных записей служб выберите созданную учетную запись, запишите её «уникальный идентификатор» для дальнейшего использования, затем перейдите на вкладку «Ключи». Создайте новый ключ в формате «JSON» и сохраните файл для дальнейшего использования.
Перейдите на admin.google.com и откройте раздел «Безопасность». Откройте «Управление доступом приложений», затем «Управление доступом сторонних приложений». Нажмите «Добавить приложение», «Имя OAuth-приложения или идентификатор клиента». Введите идентификатор клиента вашего OAuth-приложения, затем выберите его из списка. Выполните все шаги, убедившись, что приложение помечено как «Доверенное». После этого оно должно появиться в списке:
Вернитесь в раздел «Управление доступом приложений», прокрутите вниз и выберите «Управление делегированием в домене». Нажмите «Добавить новый» и введите идентификатор клиента учетной записи службы, которую вы создали ранее. В разделе «Области действия» вставьте значение:
В панели администратора Discourse перейдите в раздел Администрирование > Настройки > Вход и аутентификация > Аутентификаторы и найдите «google oauth2 hd». Настройте следующие параметры:
google oauth2 hd: доменное имя вашего Google Workspace
google_oauth2_hd_groups_service_account_json: вставьте содержимое файла ключа учетной записи службы, который вы создали ранее
google_oauth2_hd_groups_service_account_admin_email: введите адрес электронной почты любой учетной записи администратора Google Workspace. Эта учетная запись будет использоваться службой при получении информации о группах Google
google oauth2 hd groups: включено
При следующем входе пользователя Discourse автоматически загрузит и сохранит информацию о группах Google.
Чтобы связать группу Google с группой Discourse, откройте настройки группы в Discourse и перейдите в раздел Управление → Участники. В разделе «Автоматически» появится новый выпадающий список, позволяющий связать любое количество групп Google с группой Discourse:
Изменения в этом параметре вступают в силу немедленно. Изменения членства в группах Google вступят в силу при следующем входе пользователя.
Большое спасибо @angus за его работу над этой функцией. Мы надеемся в ближайшем будущем расширить эту систему синхронизации групп на другие методы входа.
Я бы очень хотел использовать это с «generic oauth2» (в частности, для Auth0). Есть ли другая ветка обсуждения или issue на GitHub, за которыми я могу следить по этой теме?
@angus@david Я следовал этим инструкциям в точности так, как они изложены. У меня есть поле для поиска группы, но группы не отображаются. Есть какие-то идеи?
Привет, Чарли, параметр google oauth2 hd относится к API Google OIDC (документация здесь). Согласно их описанию, это:
Домен, связанный с Google Workspace или облачной организацией пользователя
Для примера: если бы я настраивал это внутри компании для наших сотрудников, я бы установил значение discourse.org.
Да!
Группы Google появятся в Discourse только после того, как член этой группы войдёт в систему через Google. У нас нет механизма для их отображения заранее.
@david Я наконец-то добился успеха. Мне пришлось отключить несколько вещей. На моём сайте пользователи автоматически входили через Google OAuth. Я отключил это и Discourse Connect, и всё заработало. Не уверен, что именно вызывало сбой. Как только я физически вошёл через Google, всё заполнилось.
Как и @John_Faig, я задаюсь вопросом, всё ли ещё это экспериментальная функция.
Я только что узнал об этой возможности и планирую перенести три группы Google Groups. Убедить людей «измениться» крайне сложно. Нам нужны веские причины, чтобы выйти из зоны комфорта. При этом нам не нужны препятствия в процессе. Создание учётной записи (Discourse) на ещё одном сайте — это дополнительная нагрузка для тех, кто уже привык к GG. Если эта функция стабильна, потенциальное препятствие устраняется, и мы сможем сосредоточиться на предоставлении убедительных причин для аудитории, чтобы она перешла на новую платформу.