페이스북은 여러 API를 제공하고 있습니다. 이런 API는 웹이나 앱을 개발하거나 여러 용도로 활용할 수도 있죠. 참고로 페이스북 API는 아래 주소인 페이스북 개발자 사이트에서 받으실 수 있습니다.
페이스북 개발자 사이트 바로가기 >

만약 페이스북 API를 사용하여 페이스북과 연동 후 다양한 기능을 사용하려면 어떻게할까요? 예를들어 많이 사용하는 api 기능으로는 '좋아요', '공유하기' 그리고 페이스북 로그인등이 있습니다. 이런 api를 사용하기 위해서는 구동되는 환경에 따라 달라지며 웹어플리케이션(Web application)의 경우 자바스크립트를 SDK를 사용하는 방법이 있습니다.

아래 주소는 SDK for Javascript, 즉 자바스크립트를 위한 sdk를 제공하고 이를 설치하는 방법 및 사용방법에 대한 메뉴얼 등을 제공하므로 참고하시기 바랍니다.

SDK for javascript - Facebook

SDK를 설치하게 되면 웹에서 페이스북을 활용할 수 있는 다양한 기능이 제공되며 이를 사용할 수 있도록 FB객체와 아래와 같은 메소드를 제공합니다.
.init() - 초기 설정 및 기타 셋업
.api() - Graph API를 사용
.ui() - 대화창 인퍼페이스 설정

그럼 실제로 어떻게 사용하는지는 아래에서 알아보세요.



# 페이스북 로그인 관련 메소드
아래의 메소드는 FB SDK를 사용하여 가장 많이 사용되는 메소드입니다. 먼저 로그인 기능을 수행하는 메소드입니다.
FB.login() // 로그인 창을 띄움

FB.logout() // 현재 로그인되있을 경우 로그아웃함

이제 FB의 메소드를 사용하여 로그인하거나 로그아웃 할 수 있습니다.


! 로그인으로 가져올 권한 정하기, scope
로그인 후 원하는 정보를 불러오려면 사용자에게 어떤 정보를 앱 또는 웹에서 원하는지 확인하는 과정이 필요하겠죠. 이런 로그인은 아래와 같이 사용하여 설정하고 로그인할 수 있습니다.
FB.login(function(response) {
  console.log(response);
},
{
  scope: 'public_profile,email, user_friends'
});

위 코드는 public_profile과 email 그리고 친구목록 요청하고 있습니다. 더 많은 scope는 페이지 최하단의 정보를 참고하세요.

만약 현재의 로그인 상태를 알아보려면? 그때는 아래와 같이 getLoginStatus() 메소드를 사용합니다.
FB.getLoginStatus() // 로그인 상태를 확인하고 콜백함수를 실행함

여기까지 로그인 관련 메소드라면 아래는 실제 사용자 정보를 가져오는 방법에 대하여 자세히 알아봅니다.



# 페이스북 사용자의 정보 가져오기
로그인 이후 앱에 설정된 권한과 로그인한 유저가 승인한 권한에 대하여 값을 가져올 수 있습니다. 이때 가져오는 정보는 다양한데 이름이나, Facebook ID, 프로필 사진, 친구목록, 좋아요 수 등등 매우 다양한 정보를 가져오게됩니다.

정보를 가져오는 경우 Graph API를 사용하는데 아래와 같이 api() 메소드를 사용합니다.

FB.api()


현재 사용자의 Facebook 정보는 아래의 명령어를 통해 콘솔에서 보여줄 수 있습니다.
FB.api('/me', function(response) { console.log(response.name); });
// 콘솔창에 접속자의 네임 등등 출력

가져오는 정보는 기본적으로 가져올 수 있는 정보와 앱 설정에서 추가된 정보등을 제한적으로 가져오게됩니다. 특정 정보들을 가져올 경우 앱 검수 등이 필요할 수 있으니 참고하시기 바랍니다. 이 경우 페이스북 개발자 페이지에서 권한을 얻어 가져와야 할 것입니다.

@ 가져올 수 있는 scope 리스트

  • email
  • groups_access_member_info
  • publish_to_groups
  • user_age_range
  • user_birthday
  • user_events
  • user_friends
  • user_gender
  • user_hometown
  • user_likes
  • user_link
  • user_location
  • user_photos
  • user_posts
  • user_tagged_places
  • user_videos

이처럼 정말 많은 정보를 가져올 수 있습니다.