관리 메뉴

프론트엔드 정복하기

OAuth2.0 페이스북 로그인 예제 본문

API

OAuth2.0 페이스북 로그인 예제

GROWNFRESH 2020. 12. 2. 10:12

[ SDK 설정 단계 ]

먼저 JavaScript용 Facebook SDK를 설정한다.

body태그 안에 다음을 입력한다.

<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : '{your-app-id}',
      cookie     : true,
      xfbml      : true,
      version    : '{api-version}'
    });
      
    FB.AppEvents.logPageView();   
      
  };

  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "https://connect.facebook.net/en_US/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
</script>

{your-app-id}를 앱 ID로 바꾸고 {api-version}을 타게팅하는 API 버전으로 바꿉니다. 현재 버전은v9.0 입니다.

 

 

 

[ 로그인 확인 단계 ]

웹 페이지를 읽어들일 때 사용자가 이미 Facebook 로그인을 했는지 확인한다.

예를 들어 '페이스북 로그인' 버튼을 클릭하면

=> 다음 함수를 실행하여 로그인 상태를 체크하고

=> 로그인 상태에 따라 다음 액션을 취한다.

 

이 함수는 보통 로그인버튼의 onlogin 속성에 입력해서 사용한다. (그 예제는 아래의 [ 로그인버튼 삽입 ] 단계에서 확인할 수 있다.)

 

다음은 해당 함수다.

FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
});

 

response 개체는 다음과 같다.

{
   (1) status: 'connected',
   (2) authResponse: {
          accessToken: '...',
          expiresIn:'...',
          signedRequest:'...',
          userID:'...'
    }
}

위에서 (1) status는 다음 중 하나이다.

(1) status 값
connected 사용자가 Facebook 로그인 o / 앱 로그인 o
not_authorized 사용자가 Facebook 로그인 o / 앱 로그인 x
unknown 사용자가 Facebook 로그인 x
=> 앱에 로그인했거나 FB.logout()이 호출됐는지 알수없음
=> Facebook에 연결할 수 없음

 

(connected 상태인 경우) authResponse
accessToken 앱 사용자의 액세스 토큰
expiresIn 토큰 만료로, 갱신해야 하는 UNIX 시간
signedRequest 앱 사용자 정보, 서명된 매개변수
userID 앱 사용자 ID

 

[ 로그인 확인 이후 단계 ]

로그인 상태를 확인했으면 다음을 수행할 수 있다.

connected 상태인 경우 => 앱 로그인된 환경으로 리디렉션된다.
not_authorized or unknown => FB.login()을 사용하여 페이스북 로그인 버튼 or 대화상자 메시지를 표시한다.

 

 

[ 로그인 버튼 삽입 ]

로그인 버튼 삽입은 다음 url을 참고한다.

developers.facebook.com/docs/plugins/login-button

 

로그인했는지 확인하는 js 콜백함수onlogin 속성으로 입력한다.

<fb:login-button 
  scope="public_profile,email"
  onlogin="checkLoginState();">
</fb:login-button>
function checkLoginState() {
  FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
  });
}

 

 

 

공식 사이트

developers.facebook.com/apps/426748558342092/fb-login/quickstart/

'API' 카테고리의 다른 글

rc-tree console  (0) 2020.12.09
OAuth2.0 프로세스(엑세스 토큰을 교환하는 과정)  (0) 2020.12.02
우편번호찾기 오픈API  (0) 2020.07.09
오픈 API 사용법  (0) 2020.07.09
하나은행 공인인증서  (0) 2020.06.17