기존 로그인 시스템에서 Facebook 로그인 사용

맞춤 설정 로그인 메커니즘과 Facebook 로그인 모두를 통해 앱을 빌드할 수 있습니다. 이 가이드에서는 몇 가지 관련 시나리오를 제공하고 이러한 앱을 사용하여 사용자 환경을 처리하는 팁을 제공합니다.

개요

이메일과 비밀번호를 사용하여 앱에 가입하면 계정이 생성되는 고유 로그인 시스템을 구현할 수 있습니다. 이 경우 일반적으로 앱에서는 이메일 인증 단계를 사용하여 ID를 인증합니다.

또는 로그인 시스템에서 전적으로 Facebook 로그인을 사용하도록 선택할 수 있습니다. 이 경우 사용자가 Facebook 로그인을 사용하여 앱에 가입하면, 계정이 생성되고, Facebook에서 인증 단계를 처리합니다.

앱에서는 다음 시나리오 외에도 더 복합한 상황을 처리해야 할 수도 있습니다.

  • 사용자가 이메일과 비밀번호를 사용하여 앱에 가입하지만, Facebook 계정에서 데이터를 가져오거나, 타임라인에 게시하거나, 전적으로 로그인 용도로만 나중에 Facebook 로그인을 사용하려 할 수 있습니다.
  • 사용자가 이메일과 비밀번호를 사용하여 앱에 가입하지만, 나중에 개별적으로 Facebook으로 로그인하도록 선택합니다. 이 가이드에서는 처음에 제공한 이메일과 해당 Facebook 계정과 연결된 기본 이메일이 같다고 가정합니다.
  • 사용자가 Facebook 로그인을 사용하여 앱에 가입한 다음, 나중에 이메일 주소와 비밀번호를 사용하여 이 계정에 로그인하려 합니다.

이 가이드에서는 이러한 상황을 처리하는 가장 좋은 방법을 간략하게 설명합니다.

Facebook 로그인과 이미 로그인한 계정 연결

이 섹션에서는 사용자가 앱의 맞춤 설정 로그인 시스템을 사용하여 계정을 만드는 경우에 대해 다룹니다. 나중에 여전히 로그인한 상태에서 이 계정과 Facebook 계정을 연결하려 합니다. 예를 들어, 사용자가 이메일 주소와 비밀번호를 사용하여 Spotify에 가입할 수 있지만, 타임라인에 청취 활동을 공개하려는 등의 경우에 Facebook 로그인을 사용하여 이 계정을 Facebook 계정과 연결하도록 나중에 선택할 수 있습니다.

1. 앱에 Facebook 로그인 플로 추가

이 단계를 완료하기 위해 앱에서 Facebook 로그인 플로를 사용하는 방법에 관한 가이드를 참조하세요. 예를 들어 Spotify에서, 사용자가 청취 활동을 공개하도록 의사를 표시하는 시점에 앱에서 Facebook 로그인 플로를 시작하거나, Facebook 계정과 계정을 연결하는 명시적인 옵션을 제공할 수 있습니다.

2. 계정 정보 병합 처리

사용자가 고유 로그인 시스템을 사용하여 앱에 로그인한 다음 Facebook 로그인 플로를 완료하면 이제 앱에는 병합해야 하는 매우 중요한 요소가 두 개 생깁니다.

  • 앱에서 만든 계정
  • 사용자의 Facebook 계정을 식별하는 Facebook의 정보

대부분의 앱에서 원래 계정은 데이터베이스 테이블에 저장되므로, 가장 간단한 방법은 Facebook 계정 정보를 데이터베이스의 해당 계정과 연결하는 것입니다.

일반적으로 사용자의 Facebook 계정 정보를 저장할 새 테이블을 만드는 것이 좋습니다. 기존 계정 테이블에 열을 추가하는 대신 별도의 테이블을 유지하면 시간 경과에 따라 다른 OAuth 계정 로그인을 신속하게 지원할 수 있다는 이점이 있습니다.

나중에 동일한 사용자가 앱에 로그인하려고 선택하면 두 메서드를 통해 원활하게 로그인할 수 있도록 데이터베이스에 저장된 정보가 일치하는지 비교할 수 있습니다.

Facebook 로그인을 통해 개별적으로 만든 계정 병합

이 경우에는 사용자가 이메일과 비밀번호 등의 고유 로그인 정보를 사용하여 로그인했습니다. 나중에 사용자가 로그아웃할 때 Facebook 로그인을 사용하여 앱에 로그인하도록 선택합니다. 이제 앱에는 동일한 사용자의 계정이 두 개 있습니다. 하나는 앱 로그인 시스템을 통해 생성되며 다른 하나는 Facebook 로그인 플로를 통해 만듭니다. 이 사용자에게 최적의 환경을 제공하려면 앱에서 이러한 계정을 하나로 병합해야 합니다.

이 가이드에서는 앱에서 만든 각 계정에 이메일 주소가 연결되어 있다고 가정합니다. 그러나 사용자가 Facebook 계정과 연결된 이메일이 아닌 다른 이메일을 사용하여 기존 계정을 만들었을 가능성이 있습니다. 이 경우 앱에서 명시적으로 '계정 병합' 옵션을 제공하여, 사용자가 병합하려는 두 개의 개별 계정을 수동으로 지정할 수 있게 해야 합니다.
고유 맞춤 설정 계정에서 이메일 주소를 저장하지 않는 경우에도 사용자가 병합하려는 계정을 수동으로 지정할 수 있게 해야 합니다.

1. 이메일 권한을 요청하도록 Facebook 로그인 플로 수정

앱의 고유 맞춤 설정 로그인 시스템에서 이메일 주소를 사용하여 각 계정을 고유하게 식별하는 경우에도 Facebook 로그인 플로 중에 사용자의 이메일 주소를 요청해야 합니다(email 권한 사용). 이 작업을 수행하는 방법은 권한 요청에 대한 가이드를 참조하세요.

2. Facebook 로그인 계정과 앱 계정 병합

Facebook을 사용하여 성공적으로 로그인하고 나면 사용자의 이메일 주소, Facebook ID 및 액세스 토큰이 생깁니다. 앱에서 동일한 이메일 주소를 사용하여 만든 기존 계정을 검색해야 합니다. 기존 계정이 있으면 위에 추천된 대로 두 계정을 병합하고 기존 계정에 Facebook 정보를 추가해야 합니다.

이때 일반적인 방식과 동일하게 사용자를 로그인시켜야 합니다.

해당 이메일 주소를 사용하는 기존 항목이 데이터베이스에 없으면 새로운 사용자로 간주해야 합니다.

Facebook 로그인으로 만든 계정에 수동 로그인 정보 추가

사용자가 Facebook 로그인을 사용하여 앱에 계정을 만들었지만, 나중에 고유한 로그인 정보와 비밀번호를 사용하여 계정에 로그인하려는 경우 이 상황이 발생합니다. 예를 들어 Netflix에는 일반 로그인 시스템과 함께 Facebook 로그인을 사용하는 웹 앱이 있으며, 사용자가 일반 로그인 시스템만 사용할 수 있는 Xbox 360 앱도 있습니다.

1. Facebook 로그인 이메일 주소가 인증되었는지 확인합니다.

각 계정을 식별하는 고유 로그인 정보로 이메일 주소를 사용하는 경우, 앱에서 사용자의 Facebook 계정과 연결되고 Facebook 로그인 중에 확보된 이메일 주소가 올바른지 확인해야 합니다. Facebook 로그인 후 확보한 주소에 인증 이메일을 보내는 코드를 앱에 만들어 확인할 수 있습니다(일반 로그인 시스템의 일부로 이 단계가 필요할 가능성이 큼).

2. 사용자에게 새로운 비밀번호(및 기타 로그인 정보)를 제공하도록 요청

이메일 주소를 인증하고 나면 이제 사용자에게 비밀번호를 제공하도록 요청하고, 이메일 주소와 함께 이 비밀번호를 사용하여 나중에 앱에 로그인할 수 있음을 표시합니다. 제공되고 나면 데이터베이스에서 현재 계정 정보를 저장 중인 부분에 이 비밀번호를 추가할 수 있습니다.

앱의 로그인 시스템에서 이메일 주소를 ID로 사용하지 않고 사용자 이름과 같이 사용자가 생성한 요소를 사용하는 경우, 비밀번호와 동시에 이 요소도 제공하도록 요청해야 합니다.

사용자는 로그인 계정에서 Facebook 계정 연결을 삭제하는 기능 또한 앱에서 제공된다고 기대할 수 있습니다. 이 기능을 수행하려면 특정 사용자의 Facebook 정보가 있는 계정 데이터베이스 테이블을 제거하기만 하면 됩니다.