2011-12-14 146 views
2

目前,在新的SDK和OAuth 2.0发生更改后,FB.getLoginStatus根本不会触发。 我们曾经在FB.getLoginStatus中获得响应,并调用我们的回调函数,该函数又将用户重定向到我们的facebook应用程序。FB.getLoginStatus()没有触发

请帮忙。

的代码片段 -

FB.init({ 
     appId: '<%=ConfigurationManager.AppSettings["APIKey"]%>', // App ID 
     //channelURL: 'xd_receiver.htm', // Channel File 
     status: true, // check login status 
     cookie: true, // enable cookies to allow the server to access the session 
     oauth: true // enable OAuth 2.0 
     //xfbml: true // parse XFBML 
    }); 
update_user_is_connected(); 
function update_user_is_connected() 
{ 
    FB.getLoginStatus(function(response) 
    { 
     callback(); 
      }); 
} 

function callback() { 
    var fbURL = "http://apps.facebook.com/" + '<%=Suffix%>' + "/MyPage.aspx"; 
    eval("parent.location='" + fbURL + "'"); 

} 

现在FB.getLoginStatus不工作。

问候, KK

回答

0

卡迈勒,

我相信你可以用

FB.Event.Subscribe('auth.login', callback()); 

问候更换

FB.getLoginStatus(function(response) 
{ 
    callback(); 
     }); 

解决您的问题

+0

我该如何获取登录的用户ID,令牌等? – 2011-12-14 10:04:21

2

我有同样的问题,并通过添加true作为第二个参数固定它:

FB.getLoginStatus(function(response) { 
     callback(); 
    }, 
    true); 

这将禁用缓存和力量重装。请参阅the docs

-2

确保您所有的URL都是正确的,我在本地运行时遇到了同样的问题,但是网站URL指向了生产网站,一旦我纠正此问题,getLoginStatus就可以正常工作。

0

此代码与我很好地协作,以检查登录状态并请求登录并基于Java脚本SDK获取oauth信息(名称,用户ID,令牌...)。

我有一些建议,即您必须确保您的应用程序和频道文件应该位于您在Facebook应用程序设置中设置的域内。

另外,还要确保你有DIV FB-根在你的代码:

<div id="fb-root"></div> 

如下图所示 希望这可以帮助...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Test Page</title> 
    <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script> 
</head> 
<body> 
    <div id="fb-root"></div> 
    <script type="text/javascript"> 

     window.fbAsyncInit = function() { 
      FB.init({ 
       appId  : 'xxxxxxxxxxxxx', // App ID 
       channelUrl : 'https://xxxxxxxxxxxxx/channel.html', 
       status  : true, 
       cookie  : true, 
       xfbml  : true, 
       oauth  : true 
      }); 

       var token = ""; 
       var userId = ""; 

       FB.getLoginStatus(function(response) { // Get Login Status 

        if (response && response.authResponse) { // Check if User is Logged In 

         var token = response.authResponse.accessToken; // Get Token 
         var userId = response.authResponse.userID;  // Get User ID 

        } else { 
         // alert("Not Auhtenticated"); 
         FB.login(function(response) { // Promot User to Authenticate App 
          if (response && response.authResponse) { 
           var token = response.authResponse.accessToken; 
           var userId = response.authResponse.userID; 
          } 
         }, {scope: 'user_likes,friends_likes,publish_stream,read_friendlists,offline_access'}); // Scopes Example... 
        } 
       }); 
      }; 

      //Load asynchronously 
      (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 = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=xxxxxxxxxxx"; 
       fjs.parentNode.insertBefore(js, fjs); 
      }(document, 'script', 'facebook-jssdk')); 

    </script> 
</body> 

2

正好遇到这错误,同时尝试检查用户是否已在页面完成加载后立即使用Facebook登录。

如果您正在尝试这样做,您需要等待facebook sdk完成加载,然后在FB.init()之后致电内的checkLoginState()方法。