Реализация входа в Facebook

Будучи новичком с фейсбуком. Как вы получаете информацию о пользователе после входа в систему? Вот код:

 <html>
<head>
  <title>My Facebook Login Page</title>
</head>
<body>
  <div id="fb-root"></div>
  <script>
    window.fbAsyncInit = function() {
      FB.init({
        appId      : 'APP_ID',
        status     : true, 
        cookie     : true,
        xfbml      : true,
        oauth      : true,
      });
    };
    (function(d){
       var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
       js = d.createElement('script'); js.id = id; js.async = true;
       js.src = "//connect.facebook.net/en_US/all.js";
       d.getElementsByTagName('head')[0].appendChild(js);
     }(document));
  </script>
  <p><fb:login-button autologoutlink="true"></fb:login-button></p>
</body>

Я красный, что я должен подписаться на событие auth.login, а затем использовать FB.api... здорово, но как вы это делаете?

Я попробовал следующее:

 <html>
<head>
  <title>My Facebook Login Page</title>
</head>
<body>
  <div id="fb-root"></div>
  <script>
    window.fbAsyncInit = function() {
      FB.init({
        appId      : 'APP_ID',
        status     : true, 
        cookie     : true,
        xfbml      : true,
        oauth      : true,
      });
    };
  FB.auth.login{
        FB.api('/me', function(response) {
          alert(response.name);
        });
      }
    };

    (function(d){
       var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
       js = d.createElement('script'); js.id = id; js.async = true;
       js.src = "//connect.facebook.net/en_US/all.js";
       d.getElementsByTagName('head')[0].appendChild(js);
     }(document));
  </script>
  <p><fb:login-button autologoutlink="true"></fb:login-button></p>
</body>

Спасибо за помощь. И извините, если я выгляжу глупо...

2 ответа

Решение

Как только вы инициализируете Facebook SDK (используя FB.init), вы можете начать использовать его для запросов, событий и т. Д.

В документации рассказывается о 5 методах аутентификации. Какой из них вам нужен, зависит от того, что вы хотите сделать, и если пользователь уже авторизовал ваше приложение и разрешения, которые вы собираетесь использовать.

Если пользователь не вошел в ваше приложение, вам нужно использовать метод входа в систему:

FB.login(function(response) {
    if (response.authResponse) {
        // logged in
    }
    else {
        // not logged in
    }   
});

Если он уже вошел в систему, или вы не знаете, какой у него статус, используйте getLoginStatus:

FB.getLoginStatus(function(response) {
    if (response.status === "connected") {
        // the user is logged in and has authenticated your app
        FB.api("/me", function(apiresponse) {
            console.log("api result: ", apiresponse);
        });
    }
    else if (response.status === "not_authorized") {
        // the user is logged in to Facebook, but has not authenticated your app
    }
    else {
        // the user isn't logged in to Facebook.
    }
});

Чтобы сделать запросы API, используйте метод API, как в примере, который я дал вам.

Для самых начинающих: мне пришлось поместить фрагмент кода, который дал мне Низан, и добавить его после вызова FB.init следующим образом:

 <html>
<head>
  <title>My Facebook Login Page</title>
</head>
<body>
 <div id="fb-root"></div>
 <script>
   window.fbAsyncInit = function() {
  FB.init({
    appId      : 'APP_ID',
    status     : true, 
    cookie     : true,
    xfbml      : true,
    oauth      : true,
  });
  FB.getLoginStatus(function(response) {
if (response.status === "connected") {
    // the user is logged in and has authenticated your app
    alert("You are logged in");
}
else if (response.status === "not_authorized") {
    // the user is logged in to Facebook, but has not authenticated your app
}
else {
    alert("You are not logged");
}
});
};
(function(d){
   var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
   js = d.createElement('script'); js.id = id; js.async = true;
   js.src = "//connect.facebook.net/en_US/all.js";
   d.getElementsByTagName('head')[0].appendChild(js);
 }(document));
 </script>
 <p><fb:login-button autologoutlink="true"></fb:login-button></p>
</body>
</html>
Другие вопросы по тегам