APi

초간단 웹 <> 페이스북 로그인 연동하기

dev.mk 2017. 12. 16. 21:02
반응형

페이스북 로그인 API로 연동하기

 

1. 페이스북 개발자센터 사이트에서 로그인 후 [시작하기] 버튼을 누른다.

 

https://developers.facebook.com/

 

 

2. 앱아이디를 등록한다. (돈들거나 그런것 아님 공짜)

 

 

3. 제품선택 > Facebook 로그인 [설정]을 누른다. 옆에 문서읽기는 메뉴얼이다.

 

 

 

4. 어떤 서비스에 적용할 것인지 선택 한다. (웹)

 

 

5. 로그인 연동을 적용 하려는 URL를 입력 후 [Save] 버튼을 누른 뒤 [계속] 버튼을 누른다.

 

 

6. api 적용 코드들의 예제와 설명이 나온다. 어떻게 사용하는지 읽어보고 다음 누른다.

 

 

7. 다음 누르고 스크롤을 밑으로 내리면 '전체 코드 예시' 가 있는데 

그냥 그대로 긁어서 스크립트안에 appId : '{your-app-id}', 이 부분만 나의 appId로 변경하면 된다.

 

근데 예시코드 그대로 긁어서 쓰면 뭔가 어설프다. 

 

로그인만 되고 로그아웃도 없다. 

 

나는 로그아웃 펑션까지 추가해서 이름,이메일을 출력해보겠다.

 

아래는 내가 적용한 코드이다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<html>
<head>
<title>Facebook Login JavaScript Example</title>
<meta charset="UTF-8">
</head>
<body>
<script src="/js/lib/jquery-1.9.1.min.js"></script>
<script>
  function statusChangeCallback(response) {
    console.log('statusChangeCallback');
    console.log(response);
    if (response.status === 'connected') {
        alert("로그인 되었습니다.")
        $('#status').after('<button id="logout">로그아웃</button>');
      testAPI();
    } else {
      document.getElementById('status').innerHTML = 'Please log ' +
        'into this app.';
    }
  }
 
  function checkLoginState() {
    FB.getLoginStatus(function(response) {
      statusChangeCallback(response);
    });
  }
 
  window.fbAsyncInit = function() {
  FB.init({
    appId      : '321744354607389',
    cookie     : true,  // enable cookies to allow the server to access 
                        // the session
    xfbml      : true,  // parse social plugins on this page
    version    : 'v2.8' // use graph api version 2.8
  });
 
  FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
  });
 
  };
 
  (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'));
 
  function testAPI() {
    console.log('Welcome!  Fetching your information.... ');
    FB.api('/me',{fields:'email,name'}, function(response) {
      console.log('Successful Name: ' + response.name);
      console.log('Successful Email: ' + response.email);
      
      //javascript형식 문자열 추가하기
      document.getElementById('status').innerHTML =
        '페이스북 로그인되었습니다. ' + response.name + '님!';
      
      //jQuery형 문자열 추가하기
      $('#userInfo').html("이름 : "+response.name+" 메일 :"+response.email);
      
    });
  }
  
    $(document).on("click","#logout",function(){ 
        FB.logout(function(response) {
           // Person is now logged out
               alert("로그아웃 되었습니다.");
               location.reload();
        });
      });
</script>
 
<fb:login-button scope="public_profile,email" onlogin="checkLoginState();"></fb:login-button>
<div id="status"></div>
<div id="userInfo"></div>
</body>
</html>
cs

 

-14번라인 로그인 성공하면 로그아웃 버튼을 div에 추가하였다

 

-53번라인 { fields : 'email,name' }을 추가하였다.

원래 성공 response을 콘솔에 출력하면 객체에 id,name 있지만, 

email만 추가하면 id,email만 나오기 때문에 name까지 추가한 것이다. 

그 외에도 생일,성별 기타 api문서에서 제공하는 정보를 추가 하면 된다. 

 

-68번라인 페이스북 로그아웃 코드를 추가하였다.

 

출력화면

 

 

 

 

 

반응형