Facebook으로 Discourse ID에 로그인할 수 없습니다

meta.discourse.org의 배너에서 Facebook 소셜 로그인이 제거될 것이며, Discourse ID로 전환할 것을 권장한다는 내용을 확인했습니다. 그래서 Discourse ID 링크를 클릭하여 Facebook으로 로그인해 보았지만 실패했습니다.

Facebook 설정이 올바르지 않은 것 같습니다. 아직 Facebook 로그인이 작동하지 않으므로, 11월 30일 마감 기한을 연장해야 한다고 생각합니다.

기능 사용 불가

이 앱에 대한 추가 세부 정보를 업데이트하고 있으므로 Facebook 로그인은 현재 사용할 수 없습니다. 나중에 다시 시도해 주세요.

보고해 주셔서 감사합니다, Dan. Facebook 계정으로 로그인하는 데는 성공했지만, 앱 심사 절차가 변경되어 Facebook AI 사용 방식에 대한 세부 정보를 제공해야 하는 것 같습니다. 해당 사항은 이미 제출했으며 현재 심사를 기다리고 있습니다. 저희 Facebook 앱은 특별한 기능을 하지 않으며 Facebook 로그인을 활성화하는 것만 제공하지만, 그럼에도 불구하고 Meta(Facebook)의 심사가 필요합니다. Hopefully they do this soon.

해당 심사가 얼마나 빠르게 진행되느냐에 따라, 여기 meta에서 기한을 연장하는 방안을 검토하겠습니다.

Facebook 로그인에서 흔히 발생하는 문제 중 하나는, Facebook 앱의 관리자 설정에서 "개발자"로 등록된 사용자에게는 정상적으로 작동하지만, 일반 사용자에게는 작동하지 않는다는 점입니다.

Facebook 공식 가이드의 Facebook 로그인 테스트 방법을 따라가면 해당 문제를 재현할 수 있을 것입니다.

좋은 제안 감사합니다. 방금 그렇게 해보았고, 일회용 계정(앱에서 관리자나 개발자가 아닌 계정)으로 로그인했습니다. 이 화면이 나타났습니다:

지금은 조금 더 잘 작동하지만, 여전히 완전히 정상적으로 작동하지는 않습니다. 리다이렉트 URL이 잘못된 URL로 설정된 것 같습니다.

재현 방법:

  • id.discourse.com으로 이동하세요 (이미 로그인되어 있다면 로그아웃하세요)
  • id.discourse.com 홈페이지에서 "로그인"을 클릭하세요
  • "Facebook"을 클릭하세요
  • 이제 이름과 이메일을 입력하라는 프롬프트가 표시됩니다. 또는, 이미 Facebook으로 로그인한 경우 "이전에 Facebook으로 Discourse Login (Discourse ID)에 로그인한 적이 있습니다. 계속하시겠습니까?"라는 메시지가 표시됩니다.
  • "Continue as [Name]"을 클릭하세요
  • 이 페이지 https://meta.discourse.org/auth/failure?message=csrf_detected&strategy=discourse_id#_=_로 리다이렉트됩니다 (id.discourse.com이 아니라 meta.discourse.org!). 이 페이지에는 "죄송합니다. 인증이 시간 초과되었거나 브라우저를 변경했습니다. 다시 시도해 주세요."라는 메시지가 표시됩니다.

해당 단계를 따르더라도 id.discourse.com의 홈페이지로만 이동합니다. meta로 리다이렉트되지 않고, ID에 로그인된 상태로 ID 홈페이지가 표시됩니다.

혹시 :thinking: 이전에 meta 로그인 시도가 남아 있는 것이 있는 건 아닌가요? 다른 브라우저에서 이 문제를 재현해 볼 수 있을까요?

macOS 26.1을 사용 중입니다. Chrome 142.0에서 버그를 재현할 수 있지만, Safari 26.1에서는 재현되지 않습니다.

Chrome DevTools에서 확인한 내용은 다음과 같습니다. 민감한 부분(codestate 파라미터)은 아래에서 REDACTED로 대체했습니다:

그리고 결국 https://meta.discourse.org/auth/failure?message=csrf_detected&strategy=discourse_id 200 OK 페이지에 도달하게 됩니다 :roll_eyes:

고맙습니다. 특정 조건에서 재현할 수 있었고, 무슨 일이 일어나고 있는지 파악한 것 같습니다.

사용자가 메타(Meta)에서 인증을 시작하면, 인증 완료 후 사용자가 원래 있던 곳으로 돌아갈 수 있도록 ID 인스턴스에 destination_url 값을 저장합니다. 하지만 인증이 짧은 시간 내에 완료되지 않으면(실패하거나 사용자가 인증을 중단하는 경우), 해당 destination_url이 정리되지 않고 사용자의 브라우저 세션에 그대로 남아 있게 됩니다. 사용자가 다음에 로그인하려고 하면 ID가 해당 URL로 리다이렉트하려고 하지만, 원래 인증 플로우에서 생성된 오래된 코드/상태(code/state) 조합을 가지고 있기 때문에 리다이렉트 결과로 “죄송합니다. 인증이 시간 초과되었습니다” 오류가 발생합니다.

짧은 시간 이후에는 아예 리다이렉트하지 않아야 하며, destination_url 값이 10분 후에 정리되도록 해야 합니다. 인증을 위한 코드/상태 조합은 10분 동안만 유효하다고 생각하지만, 다시 확인이 필요합니다.

@dfabulich

오늘 아침부터 이 문제가 수정되었습니다. 이전에는 오래된 인증 값을 가진 쿠키로 인해 사용자가 해당 오류를 마주할 수 있는 버그가 있었지만, 해당 쿠키를 제거하지 못해 오류가 계속 발생하고 있었습니다.

이제 이 오류가 발생하더라도 한 번만 표시되고, 원인이 된 쿠키가 제거되므로 다음 로그인 시에는 다시 표시되지 않을 것입니다.

Facebook로 id.discourse.com에 성공적으로 로그인했습니다! (하지만 아마도 내 쿠키는 이미 오래전에 만료되었을 것입니다.)