Используете ли вы вход через Facebook на своей платформе Open edX? Если да, вы можете столкнуться с проблемой, когда пользователи не могут войти в Facebook, как раньше.

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

Вот обновление от Facebook:

Facebook will enforce redirect uri for apps:
In 35 days, we're making a security update to Facebook Login that will invalidate calls from URIs not listed in the Valid OAuth redirect URIs field of your Facebook Login settings.

This update comes in response to malicious activity we saw on our platform, and we want to protect your app or website by requiring a new strict mode for redirect URIs. Take action now to ensure your redirect traffic continues to work.

Open edX использует библиотеку Python Social Auth для подключения и аутентификации с различными сторонними службами аутентификации, включая Facebook.

Итак, почему это влияет на нашу платформу Open edX?

Когда мы используем Python Social Auth Library, URI перенаправления становится динамическим и, конечно же, не будет соответствовать URI перенаправления, зарегистрированному в настройках входа в Facebook.

Например, наш домен www.domain.com, по умолчанию будет сгенерирован URI перенаправления (если не пользовательский) www.domain.com/auth/complete/facebook/?redirect_state=<generated>&client_id=<your_client_id>

Проблема в том, что сгенерированное состояние redirect_state будет динамическим и не будет соответствовать зарегистрированному URI перенаправления.

Проблема будет решена, когда мы обновим нашу социальную библиотеку с Python Social Auth. Но поскольку мы используем старую версию Open edX, мы решили не обновлять социальное ядро. Вместо этого мы заставляем серверную часть Facebook отключать создание redirect_state при запросе аутентификации в Facebook.

Возможно, вам потребуется форк библиотеки social-core из той же версии, которая работает на вашем Open edX.

Единственные изменения, которые нам нужно применить, - это добавить REDIRECT_STATE = False внутри класса FacebookOAuth2. Который находится в backends/facebook.py файле.

После установки исправлений нам нужно убедиться, что зарегистрированный нами URI перенаправления равен www.domain.com/auth/complete/facebook/.

Вуаля !!! Теперь ваша аутентификация в Facebook должна работать, чтобы вы могли пользоваться платформой Open edX.

Если вам нужна помощь по Open edX, Valutac предлагает индивидуальную разработку программного обеспечения и настройку Open edX в соответствии с вашими потребностями. Мы полны Open edX и готовы предоставить вам мощную платформу электронного обучения.

Редактор: RA