2012-09-04 31 views
2

我无法得到此工作,并且我尝试了我在网上找到的每个解决方案。有人可以看看它,让我知道我做错了什么。无法通过FB.getLoginStatus获取登录状态

$(document).ready(function(){ 
     window.fbAsyncInit = function() { 
      FB.init({ 
       appId: 'xxxxxxx', 
       cookie: true, 
       xfbml: true, 
       oauth: true 
      }); 
      FB.Event.subscribe('auth.login', function(response) { 
       window.location.reload(); 
      }); 
      FB.Event.subscribe('auth.logout', function(response) { 
       window.location.reload(); 
      }); 
     }; 
     (function() { 
      var e = document.createElement('script'); e.async = true; 
      e.src = document.location.protocol + 
      '//connect.facebook.net/en_US/all.js'; 
      document.getElementById('fb-root').appendChild(e); 
     }()); 

     $("#fb_login_status_check").click(function(){ 
      FB.getLoginStatus(function(response) { 
          console.log(response); 
       if (response.status === 'connected') { 
        // the user is logged in and has authenticated your 
        // app, and response.authResponse supplies 
        // the user's ID, a valid access token, a signed 
        // request, and the time the access token 
        // and signed request each expire 
        var uid = response.authResponse.userID; 
        var accessToken = response.authResponse.accessToken; 
        console.log('User logged in and autenticated'); 
        } else if (response.status === 'not_authorized') { 
        // the user is logged in to Facebook, 
        // but has not authenticated your app 
        console.log('User logged in, but not autorized'); 
        } else { 
        // the user isn't logged in to Facebook. 
        console.log('User not logged in'); 
        } 
      }, true); 


     }) 

     $("#fb_logout_button").click(function() { 
      if(FB.logout(function(response) { 
       console.log('User logout.'); 
      })){ 
       console.log('User logout.'); 
      }else{ 
      console.log('User didnt logout.'); 
      } 
     }); 

     $("#fb_login_button").click(function() { 
      FB.login(function(response) { 
       if (response.authResponse) { 
        console.log('Welcome! Fetching your information.... '); 
        FB.api('/me', function(response) { 
        console.log('Good to see you, ' + response.name + '.'); 
        }); 
       }else{ 
        console.log('User cancelled login or did not fully authorize.'); 
       } 
      }, 
      { 
       scope: 'email,user_likes' 
      }); 
     }); 


     }); 

响应函数被调用后,我得到的是

authResponse null 
status "unknown" 

用户登录,我可以使用PHP SDK获得所有信息。请帮帮忙,我试图使这项工作的最后2天...

+0

_“用户已登录”_ - 他是刚刚登录Facebook还是已经_connected_到您的应用程序? – CBroe

+0

登录Facebook,并与我的应用程序连接(并授权它)... – Milos911

回答

1

你应该先初始化这个:

(function() {` 
     var e = document.createElement('script'); 
     e.async = true; 
     e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
     document.getElementById('fb-root').appendChild(e); 
}()); 

这是Facebook的SDK的Javascript需要使用这些FB功能。并且不要忘记页面上的'fb-root'元素!只需在<body>标签后面添加<div id='fb-root'></div>即可。

+0

我有

后标记,纠正我,如果我错了,但你说,需要初始化的函数初始化时页面加载“$(document).ready(function(){”。我在一切初始化后调用“FB.getLoginStatus”,并且我点击ID =“fb_login_status_check”的按钮... – Milos911

+0

您是否收到回复当FB.getLoginStatus被调用? –