Facebook好友列表提取

时间:2013-06-18 04:33:53

标签: facebook button login logout

我用谷歌搜索并查看了Stackoverflow上发布的其他类似问题,但它们似乎都没有用。我需要能够使用我的网站上的FB登录登录,然后检索我的朋友列表。我使用了FB开发者网站上的代码,我可以登录,但没有其他任何执行。特别是我想了解两件事:

  1. 如何在登录后修改此代码以将登录信息变为退出按钮?
  2. 如何让testAPI()函数执行?
  3. 这是我的整个代码:登录有效但我在JS控制台中看不到输出。

    <html>   
    <title> Test Title</title>    
    <body>
    <h1> About Test Title </h1>     
    <p>Random text.</p>
    <div id="fb-root"></div>
    <script>
       window.fbAsyncInit = function() {
       FB.init({
          appId      : '345435435435', // valid App ID is used here
          channelUrl : '//www.my website.com/channel.html', // Channel File
          status     : true, // check login status
          cookie     : true, // enable cookies to allow the server to access the session
          xfbml      : true  // parse XFBML
       });
    
       // Here we subscribe to the auth.authResponseChange JavaScript event. This event is fired
       // for any authentication related change, such as login, logout or session refresh.               This means that
       // whenever someone who was previously logged out tries to log in again, the correct case below 
       // will be handled. 
    
       FB.Event.subscribe('auth.authResponseChange', function(response) {
    
       // Here we specify what we do with the response anytime this event occurs. 
       if (response.status === 'connected') {
         // The response object is returned with a status field that lets the app know the current
         // login status of the person. In this case, we're handling the situation where they 
         // have logged in to the app.
    
          console.log('Connected case… ');
          testAPI();
       } else if (response.status === 'not_authorized') {
         // In this case, the person is logged into Facebook, but not into the app, so we call
         // FB.login() to prompt them to do so. 
         // In real-life usage, you wouldn't want to immediately prompt someone to login 
         // like this, for two reasons:
         // (1) JavaScript created popup windows are blocked by most browsers unless they 
         // result from direct interaction from people using the app (such as a mouse click)
         // (2) it is a bad experience to be continually prompted to login upon page load.
    
         FB.login();
         console.log('Not authorized case… ');
    
       } else {
        // In this case, the person is not logged into Facebook, so we call the login() 
        // function to prompt them to do so. Note that at this stage there is no indication
        // of whether they are logged into the app. If they aren't then they'll see the Login
        // dialog right after they log in to Facebook. 
        // The same caveats as above apply to the FB.login() call here.
    
        FB.login();
        console.log('else case… ');
        }
      });
    };
    
    // Load the SDK asynchronously
    (function(d){
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
    }(document));
    
    // Here we run a very simple test of the Graph API after login is successful. 
    // This testAPI() function is only called in those cases. 
    
    function testAPI() {
    console.log('Welcome!  Fetching your information.... ');
      FB.api('/me', function(response) {
      console.log('Good to see you, ' + response.name + '.');
     });
    }
    </script>
    <!--
    Below we include the Login Button social plugin. This button uses the JavaScript SDK to
    present a graphical Login button that triggers the FB.login() function when clicked.
    
    Learn more about options for the login button plugin:
    /docs/reference/plugins/login/ -->
    
    <fb:login-button autologoutlink="true" show-faces="true" width="200" max-rows="1"></fb:login-button>
     </body>
     </html>
    

2 个答案:

答案 0 :(得分:0)

要注销,您可以使用

FB.logout(function(response) {
    //console.log(response);
    // do something usefull ...
});

并将其放在按钮上。但是:您目前正在从Facebook和您的应用程序注销用户,用户可能会觉得奇怪吗?

答案 1 :(得分:0)

按要求退出按钮:

<a href='#' onClick='doLogout();'>Logout from Facebook</a>

...

function doLogout() {
    FB.logout(function(response) {
       //console.log(response);
       alert("Bye bye...");
     });
}