Configure Facebook login for Discourse

:exclamation: As of February 2023, Meta has implemented a business verification requirement when publishing new and existing apps.

:warning: Updating the Facebook app API or creating a new app will break existing logins. See troubleshooting at the bottom of this post for a solution.

Configuration

Go to developers.facebook.com/apps and …

  1. Login with the credentials of the account you want to connect to Discourse and follow the wizard.
    If you already have other apps instead of Get Started you will see the entry My Apps, then just click on :heavy_plus_sign: Add new app and follow the guide from step 1b

1a. Select Developer
 ![image|690x408,50%](upload://aps07RfPhmhHIHyMqO3RZkbnKaX.png) 
1b. Provide a name for the app, for example `Discourse Login` and click on <kbd>Next</kbd>.
 ![image|690x435,50%](upload://bqzuaZ5sdnGEdaWWtUqvv9zO6qU.png) 
1c. Click on <kbd>Add your first product</kbd>
 ![image|690x352](upload://8VWUUU5YYXsCVOC2GrhJb3bJbmj.png)
  1. Click Set Up below Facebook Login.

  2. From the menu on the left, exit Quickstart by clicking on Settings under Facebook Login

  3. Setup the Valid OAuth redirect URI field, entering https://discourse.example.com/auth/facebook/callback – obviously, replacing the domain with your site’s actual domain name and matching the HTTPS protocol. Remember that the HTTPS protocol is now mandatory for all URI redirects. Click Save Changes.
    Once completed, a successful setup should look like this in Products/Facebook Login/Settings:

  4. Navigate to Settings/Basic, enter your Discourse URL (https://discourse.example.com) in the App Domains field and also enter the URL for your Discourse site privacy policy and Terms of Service in the appropriate fields and also upload the icon of your site. (Mind that for your privacy and tos link to be verified, you should have a valid SSL certificate integrates, which is not self-signed. If the certificate is missing, or self-signed, you won’t be able to save your changes).
    If you have a company that does business in the European Union, you may want to fill in the Data Protection Officer Contact Information form before clicking on Save Changes.

    ⚠️ Facebook has changed this step to ask for extra information. We are currently working to determine what you need to provide; see recent replies. (November 2020)

    There is now a field for User Data Deletion information for GDPR compliance. Select “Data Deletion Instructions URL” from the dropdown and add a link to a page (such as https://discourse.example.com/tos#deletion) which contains a sentence like “Accounts on this site can be anonymized or deleted at the user’s request. Contact our @support group for details.”

  5. At the bottom of the page click on :heavy_plus_sign: Add Platform and select Website

  6. Enter your Discourse URL here, for example https://discourse.example.com and click Save Changes

  7. Click on the Status button to change your app from in development to public.


    The category you select does not matter.

    After a few seconds the button will become:
    firefox_2018-03-14_18-20-25

  8. In Discourse site settings, enter your Facebook app’s App ID and App Secret in the facebook app id and facebook app secret fields. You’ll also want to check off Enable Facebook authentication, requires facebook_app_id and facebook_app_secret

That’s it! Facebook login should work now. Be sure to test it from a “normal” Facebook account, not your developer account.

Troubleshooting

Hosted Customers

:discourse2: If you are a Discourse hosting customer, contact us via the email address on your site dashboard and we will be happy to assist. :+1: :slightly_smiling_face:

If you’re hosted by another provider you will need to contact them for any server-related tasks or issues.

Self-hosters

If the Facebook app API is updated, or the app ID/secret are changed, you’ll need to remove existing associations from your site before users can log in again. To remove this data, run the following:

cd /var/discourse
./launcher enter app
rails c
UserAssociatedAccount.where(provider_name: "facebook").delete_all
77 лайков

Процесс настройки, как мне кажется, немного изменился после ребрендинга в ‘Meta’. Вот пошаговая инструкция:

1a. После нажатия кнопки «Создать приложение»

«Consumer» (Потребитель) кажется лучшим выбором: он предлагает удобный ограниченный набор опций, включающий всё необходимое.

В конце — Расширенный доступ

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

Также, похоже, необходимо будет проверить права доступа в течение следующего месяца или около того. В целом, это гораздо больше бюрократии по сравнению с настройкой других OAuth-входов.

6 лайков

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

App ReviewPermissions and Features

  • public_profile → Нажмите Get Advanced Access → Следуйте инструкциям
  • email → Нажмите Get Advanced Access → Следуйте инструкциям

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

3 лайка

Я отказался от интеграции входа через Facebook. Либо это боты, либо они не тратят время на чтение. Это уже второй раз, когда они утверждают, что моя политика конфиденциальности нарушает их требования. В первый раз мне удалось решить проблему, но теперь она вернулась.

Их реакция после того, как я ещё раз указал, что моя политика конфиденциальности полностью отвечает их требованиям:

Hallo,

Спасибо за обращение по поводу вашего приложения.

Политика конфиденциальности, связанная с вашим приложением, должна соответствовать пункту 4.b Политики платформы Facebook:

Согласно этому пункту, вы должны включить следующее:

  • Чёткое объяснение того, какие данные вы собираете и обрабатываете (выполнено)
  • Цель сбора и обработки этих данных (выполнено)
  • Как пользователи могут запросить удаление этих данных (в процессе — удаление аккаунта или контента не равно возможности запросить удаление данных. Возможно, вам стоит изменить формулировку, чтобы соответствовать пункту 4.b Условий платформы)

Дополнительную информацию о требованиях к политике конфиденциальности можно найти в разделе четыре Условий платформы Facebook: https://developers.facebook.com/terms/dfc_platform_terms/ .

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

Facebook

При этом я приложил скриншот, в котором подробно описано, как пользователи могут запросить удаление данных и какие именно данные это касается.


В любом случае, самое главное, что я хочу узнать сейчас: могут ли пользователи, которые входили через Facebook, всё ещё войти с помощью комбинации имени пользователя и пароля? Или это означает, что я потерял этих пользователей?

1 лайк

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

4 лайка

В моём стандартном соглашении об условиях использования нет раздела #удаление :pensive_face:

Что мне добавить в этот раздел, если я создам его вручную?

1 лайк

Я сделал всё возможное, чтобы обновить нашу политику конфиденциальности в соответствии с их замечаниями: Privacy - TZM Forum

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

6 лайков

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

(https://unicyclist.com).

Я сказал им попробовать снова, и они снова сообщили, что не могут загрузить страницу.

Поэтому они…

вежливо просят предоставить нам скринкаст, который также включает следующие пункты:

  1. Название вашего приложения, его ID и иконку.

  2. Полный поток входа через Facebook (если вы реализовали вход через Facebook, покажите, как пользователь приложения находит кнопку входа через Facebook).

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

  4. Для каждого разрешения, к которому имеет доступ ваше приложение, покажите, как пользователь приложения получает доступ к данным, требующим этого разрешения, а также что ваше приложение делает с этими данными.

  5. Поток входа через Facebook, показывающий, что происходит, когда пользователь отказывает в разрешении, которое запрашивает ваше приложение.

  6. Расположение вашей политики конфиденциальности в приложении. Нажмите на ссылку на вашу политику конфиденциальности, чтобы показать её содержимое.

  7. Содержимое внутри вашего приложения.

  8. Социальные плагины, если они есть, и то, как они используются. Например, лайки или подписки на страницы, публикация контента в Facebook или приглашение/упоминание друзей. Если ваше приложение доступно на разных платформах (Connect, iOS, Android, Canvas и т.д.), пожалуйста, убедитесь, что вы показали всю вышеуказанную информацию для перечисленных платформ.

Работать с Meta настолько сложно, что я, возможно, просто удалю все их функции со своих форумов: вход через Facebook и встроенные iframe Instagram (немного нестабильные) (я скучаю по старым onebox).
Я даже не могу получить превью ссылок Facebook, опубликованных внутри тем (возможно, из-за этой неразрешимой проблемы).

Не уверен, что эти функции стоят таких хлопот.


Редакция: друг, который администрирует форум на Discourse, получил такое же письмо от Facebook и задумался, сколько их пользователей действительно имеют привязанную учётную запись Facebook.

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

SELECT count(*)
FROM users
LEFT JOIN user_associated_accounts ON user_id = users.id
WHERE last_posted_at > now() - '1 year'::interval
AND provider_name = 'facebook'

Если вы хотите сравнить это со всеми пользователями:

SELECT count(*)
FROM users
WHERE last_posted_at > now() - '1 year'::interval

На моём форуме 411 пользователей публиковали хотя бы раз за последний год, и у 30 из них есть привязанная учётная запись Facebook. Однако это не означает, что они её используют.


Редакция: всё готово, я отключил функции Facebook на своих форумах. Я думал, что возможно это будет потерей, но объявление об этом принесло мне много лайков :laughing:. Похоже, мои сообщества в целом не особенно любят Facebook…

6 лайков

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

Произошла ошибка при авторизации вашей учётной записи. Попробуйте снова.

Кто-нибудь знает, в чём причина и как это исправить?

У вас тот же URL для вашего форума?

1 лайк

Я дошёл до шага «Стать публичным», и тут бац…

Требуется верификация бизнеса для выхода в онлайн

Перед выходом в онлайн администратор приложения должен пройти верификацию бизнеса. Как только ваш бизнес-аккаунт будет верифицирован, вы сможете вернуться на эту страницу и выйти в онлайн. Узнать больше о верификации бизнеса.

Верификация бизнеса в моём случае недостижима, так как у меня нет официально зарегистрированного юридического лица:

Я поискал в Google и обнаружил, что это изменение произошло всего три месяца назад, то есть в феврале 2023 года:

Похоже, я навсегда обречён. Забудьте про вход через Facebook для меня. Небольшие неформальные сайты теперь просто исключены из этой площадки. :neutral_face: :disappointed:

3 лайка

Вот дополнительная информация о найденной мной проблеме.

Документация Graph API:

email

Это разрешение или функция доступны только при верификации бизнеса.

public_profile

Это разрешение или функция доступны только при верификации бизнеса.

2 лайка

Я получил письмо от разработчиков Facebook с сообщением, что я потеряю доступ к своему приложению (которое используется для входа через Facebook и для отображения Instagram в одном окне, насколько мне известно), если не пройду верификацию бизнеса.

Мой проект — это просто хобби, и он никоим образом не приносит дохода, достаточного для того, чтобы его можно было считать бизнесом. Просто интересно, как другие планируют решать эту проблему?!?

3 лайка

Предложить пользователям войти другим способом? Испечь печенье, отнести его к двери Марка Цукерберга и предложить на коленях?

Если говорить серьёзно, я думаю, что это конец пути. Никто, кроме Facebook, не контролирует веб-API Facebook. Это проблема, которую нельзя «решить» с помощью креативного мышления или обойти инженерными методами.

Извините, что приношу плохие новости :disappointed_face:

1 лайк

Для уточнения: можно ли использовать вход через Facebook без верифицированного бизнеса?

Уточнение по этому вопросу: означает ли это, что данные пользователя будут удалены и для Discourse будет создан новый пользователь, или это означает, что пользователю потребуется повторная аутентификация (предоставление разрешений на обмен информацией) в Facebook при следующем входе в систему?

Чтобы прояснить: есть ли способ использовать вход через Facebook без подтверждённого бизнеса?

Нет, насколько мне известно.

1 лайк

Получал ли кто-нибудь ещё это письмо от Meta?

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

Проверка использования данных для сообщества X

Защита конфиденциальности пользователей — один из главных приоритетов Meta и разработчиков, создающих решения на нашей платформе. Именно поэтому мы требуем ежегодной проверки, чтобы убедиться, что доступ к API и использование данных соответствуют политике Meta. Узнать больше.

Вот что вам необходимо сделать для сообщества X до 30 мая 2024 года, чтобы сохранить доступ к API и избежать ограничений:

  1. Проверьте ранее одобренные или добавленные разрешения и функции.
  1. Подтвердите, что это приложение соответствует разрешённому использованию.
  2. Подтвердите, что вы соблюдаете Условия использования платформы Meta и Правила для разработчиков, а также все остальные применимые условия и политики.
  3. Ответьте на вопросы о ваших практиках обработки данных. Узнайте о наших рекомендациях по обработке данных.

Проверка использования данных — это обязательное требование, которое администратор приложения должен выполнять один раз в год.
Убедитесь, что каждое приложение связано с верифицированным бизнесом — это необходимо для подачи проверки использования данных.

1 лайк

Да, это означает именно это.

Спасибо, сэр.

Теперь мне предстоит разобраться, что нужно изменить в конфигурации. Всегда найдётся какая-то проблема, не так ли? :grinning_face_with_smiling_eyes: