Facebook으로 사용자 로그인

이 문서에서는 Identity Platform을 사용하여 Facebook으로 사용자를 로그인 처리하는 방법을 보여줍니다.

시작하기 전에

이 튜토리얼에서는 Identity Platform을 이미 사용 설정했으며 HTML 및 자바스크립트를 사용하여 작성된 기본 웹 앱이 있다고 가정합니다. 자세한 방법은 빠른 시작을 참조하세요.

Facebook을 공급업체로 구성

Facebook을 ID 공급업체로 구성하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 ID 공급업체 페이지로 이동합니다.

    ID 공급업체 페이지로 이동

  2. 공급업체 추가를 클릭합니다.

  3. 목록에서 Facebook을 선택합니다.

  4. Facebook 앱 ID앱 보안 비밀을 입력합니다. 아직 ID와 보안 비밀이 없으면 Facebook for Developers 페이지에서 얻을 수 있습니다.

  5. Facebook 구성 아래에 나열된 URI를 트위터 앱의 유효한 OAuth 리디렉션 URI로 구성합니다. Identity Platform에서 커스텀 도메인을 구성한 경우 기본 도메인 대신 커스텀 도메인을 사용하도록 Facebook 앱 구성의 리디렉션 URI를 업데이트합니다. 예를 들어 https://myproject.firebaseapp.com/__/auth/handlerhttps://auth.myownpersonaldomain.com/__/auth/handler로 변경합니다.

  6. 승인된 도메인 아래의 도메인 추가를 클릭하여 앱의 도메인을 등록합니다. 개발 용도로는 localhost가 이미 기본적으로 사용 설정되어 있습니다.

  7. 애플리케이션 구성에서 설정 세부정보를 클릭합니다. 스니펫을 앱 코드에 복사하여 Identity Platform 클라이언트 SDK를 초기화합니다.

  8. 저장을 클릭합니다.

클라이언트 SDK로 사용자 로그인

  1. 다음과 같이 Facebook 공급업체 객체의 인스턴스를 생성합니다.

    자바스크립트

    var provider = new firebase.auth.FacebookAuthProvider();
    
  2. 선택사항: OAuth 범위를 추가합니다. 범위는 Facebook에서 요청할 데이터를 지정합니다. 더 민감한 정보에는 특정 범위가 필요할 수 있습니다. 앱에 필요한 범위를 확인하려면 공급업체의 문서를 참조하세요.

    JavaScript

    provider.addScope('user_birthday');
    
  3. 선택사항: 인증 흐름을 현지화합니다. 언어를 지정하거나 기기의 기본 언어를 사용할 수 있습니다.

    자바스크립트

    firebase.auth().languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();
    
  4. 선택사항: 추가적인 커스텀 OAuth 매개변수를 지정합니다. 이는 Facebook에만 해당하며 일반적으로 인증 환경을 맞춤설정하는 데 사용됩니다. OAuth 또는 Identity Platform에서 예약한 매개변수를 전달할 수 없습니다.

    자바스크립트

    provider.setCustomParameters({
    'display': 'popup'
    });
    
  5. Facebook 공급업체 객체를 사용하여 사용자를 로그인 처리합니다. 팝업 창을 열거나 현재 페이지를 리디렉션할 수 있습니다. 휴대기기에서는 사용자가 리디렉션하기 더 용이합니다.

    signInWithPopup()을 호출하면 팝업이 나타납니다.

    자바스크립트

    firebase
      .auth()
      .signInWithPopup(provider)
      .then((result) => {
        /** @type {firebase.auth.OAuthCredential} */
        var credential = result.credential;
    
        // The signed-in user info.
        var user = result.user;
    
        // This gives you a Facebook Access Token. You can use it to access the Facebook API.
        var accessToken = credential.accessToken;
    
        // ...
      })
      .catch((error) => {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // The email of the user's account used.
        var email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        var credential = error.credential;
    
        // ...
      });
    

    페이지를 리디렉션하려면 먼저 signInWithRedirect()를 호출합니다.

    signInWithRedirect, linkWithRedirect, reauthenticateWithRedirect를 사용할 때는 권장사항을 따르세요.

    자바스크립트

    firebase.auth().signInWithRedirect(provider);
    

    그런 다음 페이지가 로드될 때 getRedirectResult()를 호출하여 Facebook 토큰을 검색합니다.

    자바스크립트

    firebase.auth()
      .getRedirectResult()
      .then((result) => {
        if (result.credential) {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
    
          // This gives you a Facebook Access Token. You can use it to access the Facebook API.
          var token = credential.accessToken;
          // ...
        }
        // The signed-in user info.
        var user = result.user;
      }).catch((error) => {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // The email of the user's account used.
        var email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        var credential = error.credential;
        // ...
      });
    

액세스 토큰이 있으면 이를 사용하여 Facebook API를 호출할 수 있습니다. 예를 들면 다음과 같습니다.

REST

curl "https://graph.facebook.com/me?fields=id,name&access_token=[TOKEN]"

수동으로 사용자 로그인

클라이언트 SDK를 사용하지 않으려면 로그인 과정을 수동으로 처리할 수도 있습니다.

이 로그인 방법은 또한 Facebook Login for Gaming을 IdP로 지원합니다. Identity Platform은 Facebook Login for Gaming 수동 구현을 지원하지 않습니다. Identity Platform 사용자 인증 정보 교환에 토큰만 허용합니다.

  1. 해당 개발자 문서에 나온 단계에 따라 Facebook 또는 Facebook Login for Gaming 인증을 앱에 통합합니다.

  2. 이전 단계에서 구현한 흐름을 사용하여 Facebook 또는 Facebook Login for Gaming으로 사용자를 로그인시킵니다.

  3. Identity Platform 사용자 인증 정보를 위해 Facebook 또는 Facebook Login for Gaming에서 수신한 토큰을 교환합니다.

    자바스크립트

    var credential = firebase.auth.FacebookAuthProvider.credential(accessToken);
    
  4. 사용자 인증 정보를 사용하여 Identity Platform으로 사용자를 로그인합니다.

    자바스크립트

    // Sign in with the credential from the user.
    firebase.auth()
      .signInWithCredential(credential)
      .then((result) => {
        // Signed in
        // ...
      })
      .catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
        // The email of the user's account used.
        const email = error.email;
        // ...
      });
    

다음 단계