Не могу войти в Discourse ID через Facebook

Я видел баннер на meta.discourse.org, где сообщалось, что мой вход через Facebook будет удалён, и рекомендовалось переключиться на Discourse ID. Поэтому я перешёл по ссылке на Discourse ID и попытался войти через Facebook, но это не сработало.

Похоже, что ваши настройки Facebook указаны неверно. Поскольку вход через Facebook пока не работает, я думаю, вам стоит продлить срок до 30 ноября.

Функция недоступна

Вход через Facebook в настоящее время недоступен для этого приложения, так как мы обновляем дополнительные сведения о нём. Пожалуйста, попробуйте позже.

Спасибо за отчет, Дэн. Я смог войти, используя свою учетную запись Facebook, но вижу, что процессы проверки приложения изменились: теперь нужно предоставить подробности о том, как мы используем ИИ от Facebook. Это уже сделано, и мы ждем проверки. Наше приложение Facebook не выполняет ничего особенного — оно лишь позволяет вход через Facebook, но тем не менее Meta (Facebook) должна провести проверку. Надеюсь, они сделают это скоро.

Мы изучим возможность продления срока по этому вопросу здесь, в Meta, в зависимости от того, как быстро пройдет проверка.

Распространённая проблема при использовании входа через Facebook заключается в том, что он работает для пользователей, указанных в настройках администратора Facebook как «разработчики» приложения, но не работает для широкой публики.

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

Хорошее предложение, спасибо. Я только что сделал это и вошёл под временным аккаунтом (который не является администратором или разработчиком приложения). Увидел этот экран:

Теперь работает немного лучше, но всё ещё не совсем. Похоже, вы указали неверный URL для перенаправления.

Для воспроизведения:

  • Перейдите на id.discourse.com (выйдите из системы, если вы уже вошли)
  • Нажмите «Войти» на главной странице id.discourse.com
  • Нажмите «Facebook»
  • Теперь появится запрос на ввод имени и адреса электронной почты или, если вы уже входили в систему через Facebook, сообщение: «Ранее вы входили в Discourse Login (Discourse ID) через Facebook. Хотите продолжить?»
  • Нажмите «Продолжить как [Имя]»
  • Вас перенаправит на эту страницу https://meta.discourse.org/auth/failure?message=csrf_detected&strategy=discourse_id#_=_ на meta.discourse.org (а не на id.discourse.com!), где написано: «Извините, авторизация истекла, или вы сменили браузер. Пожалуйста, попробуйте снова.»

Если я следую этим шагам, меня перекидывает на главную страницу id.discourse.com, а не на meta. Я авторизуюсь в ID и вижу главную страницу ID.

Разве что :thinking: у вас остался след от предыдущей попытки входа в meta… Можете воспроизвести это в другом браузере?

Я работаю на macOS 26.1. Ошибка воспроизводится в Chrome 142.0, но не в Safari 26.1.

В инструментах разработчика Chrome я вижу следующее (несколько чувствительных параметров (code и state) заменены на REDACTED):

В итоге я оказываюсь на https://meta.discourse.org/auth/failure?message=csrf_detected&strategy=discourse_id 200 OK :roll_eyes:

Спасибо, я могу воспроизвести проблему при определённых условиях. Мне кажется, я понял, что происходит.

Когда пользователь начинает аутентификацию через Meta, мы сохраняем значение destination_url для экземпляра ID, чтобы после завершения аутентификации пользователя можно было вернуть туда, откуда он начал. Однако, если аутентификация не завершается в течение короткого времени (она не удаётся или пользователь прерывает процесс), это значение destination_url не очищается и остаётся в сессии браузера пользователя. При следующей попытке входа ID пытается перенаправить пользователя по этому URL, но поскольку в нём содержится старая комбинация кода/состояния из первоначального процесса аутентификации, перенаправление приводит к ошибке «Извините, время ожидания авторизации истекло».

Перенаправление не должно происходить вовсе после истечения короткого промежутка времени. Нам необходимо убедиться, что значение destination_url очищается через 10 минут. Я полагаю, что комбинация кода/состояния для аутентификации действительна только в течение 10 минут, но это нужно перепроверить.

@dfabulich

Это должно быть исправлено с сегодняшнего утра. У нас была ошибка, из-за которой пользователи могли столкнуться с этой ошибкой из-за куки с устаревшим значением аутентификации, но мы не очищали эту куку, поэтому ошибка продолжала появляться.

Теперь, если вы столкнетесь с этой ошибкой, вы увидите её один раз, но кука, вызвавшая её, будет очищена, и при следующем входе в систему вы больше не увидите её.

Мне удалось успешно войти в id.discourse.com через Facebook! (Но, вероятно, в любом случае мой куки-файл уже давно истёк.)