Google One Tap вход/регистрация

:discourse: Краткое описание Discourse Google One Tap добавляет поддержку регистрации и входа через Google One Tap в Discourse.
:hammer_and_wrench: Ссылка на репозиторий https://github.com/discourse/discourse-google-one-tap
:open_book: Руководство по установке Как установить плагины в Discourse

Возможности

Этот плагин добавляет поддержку входа и регистрации через Google One Tap в Discourse. После установки и настройки плагина анонимные пользователи увидят следующее приглашение:

С помощью этого приглашения они могут использовать любую учётную запись Google, в которую они уже вошли, для регистрации или входа (если у них уже есть аккаунт на вашем сайте с тем же адресом электронной почты) в ваш экземпляр Discourse.

Настройка

  1. Убедитесь, что параметр google_one_tap_enabled включён.

  2. Следуйте инструкциям по адресу Setup  |  Web guides  |  Google for Developers, чтобы получить идентификатор клиента и настроить внешний вид приглашения для входа/регистрации и экрана согласия.

  3. Добавьте полученный на шаге 2 идентификатор клиента в параметр сайта google_oauth2_client_id.

СПИСОК ИЗМЕНЕНИЙ

Нет.

Благодарности

Огромное спасибо @ghassan за разработку первоначальной версии этого плагина.

27 лайков

Спасибо за отличный плагин, однако, похоже, есть ошибка: плагин создаёт невидимый div, из-за чего невозможно взаимодействовать с любыми элементами под ним.
Также на мобильных устройствах появляется дополнительное пространство слева на странице.
Мобильные устройства:


Десктоп:

1 лайк

Чем это отличается от встроенного входа через Google для сервиса Discourse?

1 лайк

Привет :wave: Да, этому плагину определённо нужна любовь :heart: Я тестировал его вчера и столкнулся с той же проблемой. Похоже, что iframe Google в модальном окне входа/регистрации также работает некорректно. Выглядит так, будто выравнивание и стилизация отличаются от других кнопок социальных сетей. Кроме того, если открыть модальное окно входа, а затем переключиться на регистрацию, кнопка Google не отображается.

Привет, Дон, не мог бы ты добавить немного больше информации, а возможно, и несколько скриншотов? Мне удалось запустить это локально:

Однако в режиме инкогнито я сталкиваюсь с той же проблемой:

Причин этому может быть множество; одна из них, например, — «экспоненциальная задержка», которую добавила Google:

Возможно, существует способ определить, что это не загрузилось корректно, — но по крайней мере в Chrome элемент с надписью «Войти в localhost с помощью google.com» даже не отображается на странице. Может быть, мы можем использовать это?

google.accounts.id.prompt((notification) => {
    console.log(notification)
});

Этот PR должен исправить проблему. @Osama, я удалил несколько CSS-стилей. Не могли бы вы проверить это, когда у вас будет время?


3 лайка

Спасибо за отличный плагин, это именно то, что я искал.
Но совместим ли плагин с последними изменениями «Отказ от сторонних файлов cookie в Chrome начнётся в первом квартале 2024 года»? Дополнительную информацию о необходимости FedCM и её миграции можно найти здесь: FedCM required and its migration.

Ещё одно наблюдение.

Функциональность очень похожа. Можно ли объединить её с нативным входом через Google, который уже есть в Discourse, чтобы на экране входа не было двух кнопок «Войти через Google»?

1 лайк

Похоже, @nathank, вам никто не ответил, поэтому я отвечу тем, что, по моему мнению, является и ответом, и, возможно, вопросом?

Я считаю, что эта кнопка в один клик — это то, что обычно воспринимается как приглашение к созданию учётной записи Google при посещении сайта, например, как здесь:

Я полагаю, главное отличие этого варианта от нативной поддержки авторизации через Google заключается в том, что это срабатывает при посещении страницы, а не когда пользователь самостоятельно переходит к экрану входа или регистрации.

1 лайк

Я очень ценю, что вы ответили на мой немного устаревший вопрос!!

Если это так просто (и похоже, что так и есть), то почему бы не включить функционал этого плагина в ядро??

2 лайка

Да, согласен, или сделаем это опцией в ядре. Это довольно известный способ увеличить количество регистраций и снизить трение при онбординге — пользователи знакомы с таким опытом.

1 лайк

Это решение имело (или имело) некоторые проблемы, которые затрудняли вход в систему, и на мобильных устройствах выглядело неаккуратно. Извините, это действительно бесполезный ответ, так как я больше не помню, какие именно проблемы заставили меня отключить его — даже несмотря на то, что большинство пользователей здесь, в Финляндии, используют Gmail.

Поднимаю тему, тоже это заметил.

Не используйте «обычный» вход через Google. Это не сложнее. Я оставил оба варианта, так как одно нажатие работает не во всех ситуациях.

Точно, но я не хочу выбирать между двумя избыточными кнопками или их полным отсутствием в некоторых случаях. :slight_smile:

Это непреднамеренно свяжется с серверами Google для любого, кто пытается войти в систему или зарегистрироваться при первоначальной загрузке страницы.

  1. Перейдите в раздел Администрирование → Настройка → Темы → CSS/HTML.
  2. Откройте редактор CSS для вашей активной темы.
  3. Добавьте следующий код в секцию CSS:
div#google_one_tap.btn-social {
    display: none !important;
}
  1. Сохраните изменения.
  2. Обновите страницу, чтобы убедиться, что кнопка больше не отображается.
2 лайка