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

Last edited by @martin 2024-06-11T07:00:30Z

Check documentPerform check on document:
78개의 좋아요

'Meta’로 리브랜딩하면서 이 설정 과정이 조금 변경된 것 같습니다. 아래는 단계별 안내입니다:

1a. ‘새 앱’ 클릭 후

Consumer(소비자)가 가장 좋은 선택지로 보입니다. 필요한 모든 것을 포함하면서도 옵션이 제한적으로 잘 정리되어 있기 때문입니다.

마지막 단계 - 고급 액세스(Advanced Access)

이제 Facebook 사용자의 이메일 주소에 대한 '고급 액세스’를 요청해야 하는 것 같습니다. 몇 번의 클릭만으로 자동으로 승인되었습니다. 다만, 팝업이 뜨기 전에 해당 항목을 찾으려면 조금 헤매어야 했습니다.

또한, 향후 한 달 이내에 액세스 권한에 대한 재검토가 필요해 보입니다. 전반적으로 다른 OAuth 로그인 설정에 비해 훨씬 번거로운 과정입니다.

6개의 좋아요

결국 Facebook 로그인을 사용자가 가입할 수 있는 방법으로 설정할 수 있었습니다 (원래 앱은 Facebook이 GDPR 준수를 업데이트한 후 작동이 중단되었습니다). 관심 있는 분들을 위해, Facebook에서 완전히 새로운 앱을 생성하고 첫 번째 게시글에서 언급된 단계 외에도 Facebook 개발자 페이지에서 다음 단계를 수행해야 합니다:

App ReviewPermissions and Features

  • public_profileGet Advanced Access 클릭 → 설명에 따라 진행
  • emailGet Advanced Access 클릭 → 설명에 따라 진행

이제 사용자는 Facebook을 통해 가입할 수 있으며, 구독한 게시물의 이메일 알림도 받을 수 있습니다.

3개의 좋아요

페이스북 로그인 연동을 포기했습니다. 이 봇들이거나, 아예 읽을 생각도 없는 것 같습니다. 이제 두 번째로 제 개인정보 처리방침이 그들의 방침을 위반했다는 말을 듣고 있습니다. 첫 번째 때는 해결할 수 있었지만, 이번에는 문제가 다시 발생했습니다.

제가 개인정보 처리방침이 그들의 요구사항을 완벽하게 충족하고 있다고 반복해서 설명한 후, 그들은 다음과 같이 반응했습니다.

안녕하세요,

앱 관련 문의해 주셔서 감사합니다.

앱에 연결된 개인정보 처리방침은 Facebook 플랫폼 정책 4.b를 준수해야 합니다:

이 정책에는 다음 내용이 모두 포함되어야 한다고 명시되어 있습니다:

  • 수집 및 처리하는 데이터에 대한 명확한 설명 (완료)
  • 해당 데이터를 수집 및 처리하는 목적 (완료)
  • 사용자가 해당 데이터 삭제를 요청하는 방법 (보류 - 계정 또는 콘텐츠 삭제는 사용자가 데이터 삭제를 요청하는 것과 유사하지 않습니다. 플랫폼 약관 4.b를 준수하도록 문장을 수정할 수 있습니다)

개인정보 처리방침 요구사항에 대한 자세한 내용은 Facebook 플랫폼 약관의 4절을 방문하세요: https://developers.facebook.com/terms/dfc_platform_terms/ .

협조해 주셔서 감사합니다. 앱이 업데이트되었거나 이 요청에 대해 질문이 있으시면 이 이메일에 회신해 주시기 바랍니다.

Facebook

그런데 사용자들이 데이터 삭제를 요청하는 방법과 어떤 종류의 데이터인지가 완벽하게 설명되어 있는 스크린샷을 함께 공유하고 있었습니다.


어쨌든, 이제 제가 가장 알고 싶은 중요한 것은 이것입니다. 페이스북으로 로그인했던 사람들은 여전히 사용자 이름/비밀번호 조합으로 로그인할 수 있을까요? 아니면 그 사용자들을 잃어버린 것일까요?

1개의 좋아요

이전에 비밀번호를 설정하지 않았다면 리셋 이메일을 요청해야 하지만, 비밀번호로 로그인하는 것은 가능합니다. 우리 포럼에서도 같은 이유로 이 문제를 다뤘습니다.

4개의 좋아요

기본 TOS에 #deletion 섹션이 없습니다 :frowning:

그 섹션을 수동으로 만들 경우 어떤 내용을 추가해야 할까요?

1개의 좋아요

그들의 코멘트에 맞춰 개인정보 처리방침을 업데이트하는 데 최선을 다했습니다: Privacy - TZM Forum

처음에는 괜찮았는데, 1~2개월 후 같은 불만 사항이 다시 제기되었습니다. 어떤 이유로인지 어떤 수정도 충분하지 않았는지, 결국 앱이 비활성화되었습니다. 이후 저는 앱을 제거했습니다. 페이스북(봇)과 논쟁할 시간은 제 인생에 너무 소중하니까요.

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 로그인과 Instagram(조금 불안정한) 임베디드 iframe 기능을 모두 제거할지도 모르겠습니다. (옛날 onebox들이 그립습니다: Desert MUNI Race Ridgercrest, Ca - #23 by jmadrigal - General - Unicyclist.com).
토픽 안에 게시된 Facebook 링크의 미리보기조차 제대로 나오지 않습니다 (아마도해결되지 않은 문제 때문일 것입니다).

이 기능들이 이 정도까지 고생할 가치가 있는지 확신이 서지 않습니다.


수정: Discourse 포럼을 관리하는 친구도 Facebook에서 같은 이메일을 받았다고 하더군요. 그리고 실제로 Facebook 계정이 연결된 사용자가 몇 명이나 되는지 궁금해했습니다.

다음 쿼리를 data explorer에서 사용하여, 최근 1년 동안 최소 1회 이상 게시하고 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

제 포럼에서는 최근 1년 동안 최소 1회 이상 게시한 사용자가 411명이며, 그중 30명이 Facebook 계정을 연결하고 있습니다. 하지만 그들이 실제로 사용하는 것은 아닙니다.


수정: 완료했습니다. 제 포럼에서 Facebook 기능을 비활성화했습니다. 아마도 손실이라고 생각했지만, 이를 공지하자 많은 좋아요를 받았습니다 :laughing:. 결국 제 커뮤니티들은 Facebook을 그렇게 좋아하지 않는 것 같습니다…

6개의 좋아요

포럼 서버를 변경한 후, 나와 사용자들 모두 Facebook 로그인을 통해 포럼에 들어갈 수 없게 되었습니다. 다음 오류가 표시됩니다.

죄송합니다. 계정 인증 중 오류가 발생했습니다. 다시 시도해 주세요.

원인과 해결 방법을 아시는 분 계신가요?

포럼에 동일한 URL이 있나요?

1개의 좋아요

‘공개(Go Public)’ 단계까지 다 갔는데, 뚝…

공개하려면 비즈니스 인증이 필요합니다

공개하려면 앱 관리자가 비즈니스 인증을 완료해야 합니다. 비즈니스 계정이 인증되면 이 페이지로 돌아와 공개할 수 있습니다. 비즈니스 인증에 대해 자세히 알아보기.

제 경우에는 합법적으로 등록한 비즈니스가 없기 때문에 비즈니스 인증은 도저히 불가능합니다:

구글링을 해보니 이 변경 사항이 불과 3개월 전, 즉 2023년 2월에 시행된 것을 알 수 있었습니다:

아마도 저는 영영 망한 것 같습니다. 제게는 페이스북 로그인은 포기하는 게 낫겠네요. 이제 소규모 비공식 웹사이트는 플레이그라운드에서 완전히 금지된 셈이죠. :neutral_face: :disappointed:

3개의 좋아요

막대한 문제에 대해 발견한 추가 정보를 공유합니다.

Graph API 문서:

email

이 권한 또는 기능은 비즈니스 인증이 있어야만 사용할 수 있습니다.

public_profile

이 권한 또는 기능은 비즈니스 인증이 있어야만 사용할 수 있습니다.

2개의 좋아요

페이스북 개발자 이메일을 받았는데, 비즈니스 인증을 완료하지 않으면 앱에 대한 액세스 권한을 잃게 된다고 합니다. 해당 앱은 FB 로그인과 인스타그램 원박스(oneboxing)에 사용되고 있는 것 같습니다.

제 인스턴스는 취미용일 뿐이며, 비즈니스로 인정받기에 충분한 수익을 내지 않습니다. 다른 분들은 이 문제를 어떻게 해결할 계획인지 궁금합니다!?

3개의 좋아요

사용자들에게 다른 방법으로 로그인하도록 말해야 할까요? 쿠키를 구워 마크 저커버그의 문 앞에 가져다 놓고, 무릎을 꿇고 그걸 제공해야 할까요?

진지하게 말하면, 저는 이것이 끝이라고 생각합니다. 페이스북 웹사이트 API를 페이스북 외에는 아무도 통제하지 못합니다. 이는 창의적인 사고로 “해결”하거나, 우회하여 엔지니어링할 수 있는 문제가 아닙니다.

불행한 소식을 전하게 되어 죄송합니다 :disappointed_face:

1개의 좋아요

정리하자면, 인증된 비즈니스가 없어도 Facebook 로그인을 사용할 수 있는 방법이 있나요?

이 내용에 대해 명확히 하고 싶은 것이 있습니다. 이는 사용자 데이터가 삭제되고 디스코urs에 새로운 사용자로 생성되는 것을 의미합니까, 아니면 다음 로그인 시 사용자가 Facebook에서 재인증(정보 공유 권한 부여)을 해야 하는 것을 의미합니까?

정리하자면, 인증된 비즈니스가 없어도 Facebook 로그인을 사용할 수 있는 방법이 있나요?

제 지식 범위 내에서는 아니에요.

1개의 좋아요

Meta에서 보낸 이 이메일을 받은 다른 사람이 있을까요?

지난해 몇몇 분들이 비슷한 경험을 한 것 같으니, 이번에는 내 차례인 것 같습니다. 저는 개인 사업자(비기업)인데, 앞으로 Meta 로그인 기능을 제거해야 한다는 뜻일까요?

X 커뮤니티를 위한 데이터 사용 점검 완료하기

Meta와 우리의 플랫폼에서 앱을 개발하는 개발자들에게 사용자 프라이버시 보호는 최우선 과제입니다. 그래서 연 1회 정기 점검을 통해 API 접근 및 데이터 사용이 Meta의 정책을 준수하는지 확인하고 있습니다. 자세히 알아보기.

2024년 5월 30일 이전에 X 커뮤니티의 API 접근을 유지하고 제한 조치를 피하려면 다음 사항을 수행해야 합니다:

  1. 이전에 승인되었거나 추가된 권한과 기능을 검토합니다.
  2. 해당 앱이 허용된 사용법을 준수하고 있음을 인증합니다.
  3. Meta 플랫폼 약관개발자 정책을 포함한 기타 모든 적용 가능한 약관과 정책을 준수하고 있음을 인증합니다.
  4. 데이터 처리 관행에 대한 질문에 답합니다. 데이터 처리 가이드라인 알아보기.

데이터 사용 점검은 앱 관리자가 연 1회 반드시 완료해야 하는 필수 요건입니다.
각 앱이 인증된 비즈니스에 연결되어 있는지 확인하세요. 데이터 사용 점검을 제출하려면 이 인증이 필요합니다.

1개의 좋아요

네, 정확히 그 뜻입니다.

네, 감사합니다.

이제 설정에서 무엇을 변경해야 하는지 하나씩 살펴봐야겠네요. 항상 뭔가 있죠, 그렇죠? :grinning_face_with_smiling_eyes: