1

我一直在Stack Overflow上看到關於訪問用戶的Facebook朋友列表的問題。我嘗試過很多不同的方式來做到這一點,不幸的是,似乎沒有任何東西可以爲我工作。與JavaScript SDK一起使用時訪問Facebook朋友列表失敗

任何人都可以告訴我我面臨的確切問題嗎?我完全陌生的JavaScript。下面是我使用的代碼

<html> 
    <head> 
     <title>My Facebook Login Page</title> 
    </head> 
    <body> 
    <div id="fb-root"></div> 
    <script> 
     window.fbAsyncInit = function() { 
     var friends = new Array(); 
     FB.init({ 
     appId  : 'some_id', // App ID 
     channelUrl : 'http://apps.facebook.com/myapp', // Channel File 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     xfbml  : true // parse XFBML 
    }); 

    FB.api('/me/friends', function(response) { 
     if(response.data) { 
      $.each(response.data,function(index,friend) { 
       alert(friend.name + ' has id:' + friend.id); 
      }); 
     } else { 
      alert("Error!"); 
     } 
    }); 

    }; 



     // Load the SDK Asynchronously 
    (function(d){ 
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "http://connect.facebook.net/en_US/all.js"; 
    d.getElementsByTagName('head')[0].appendChild(js); 
     }(document)); 
    </script> 

    <p> 
     <fb:profile-pic uid='loggedinuser' facebook-logo='true'/> 
    </p> 
    </br> 
    </br> 
    "Welcome, <fb:name uid='' useyou='false'></fb:name> 
    </br> 

    </br> 
    </br> 



</br> 
</br> 

    </br></br> <fb:login-button autologoutlink="true" /> 

</body> 
</html> 

我得到的答覆爲undefined,我甚至無法登錄到Facebook。我嘗試使用以下示例http://jobyj.in/api/get-facebook-friends-using-javascript-sdk/。這對Demo很好,但我下載了它並試圖從我的機器上運行它也沒有給我任何結果。

對我有何建議?

更新

我使用@Somnath下方,可以登錄給出的例子。但之後得到的值爲response.session未定義,導致零好友列表。任何想法呢?

+0

IST嘗試登錄,否則你會得到不確定的響應。 – 2012-01-27 07:00:29

+0

FBML已棄用,您不應該使用'' – DMCS 2012-01-27 19:13:39

+0

@DMCS,我刪除了該行,但仍然遇到登錄問題。但是,如果我給canvas頁面url,而不是我的本地主機url,即http://apps.facebook.com/app_name/html_page我可以登錄。沒有得到什麼問題 – tejas 2012-01-31 03:59:18

回答

3

這裏是通過javascript登錄的教程。

Tutorial Javascript SDK

IST嘗試登錄,否則你會得到不確定的響應。

FB.getLoginStatus(function(response) { 
     if (response.session) { 
      // logged in and connected user, someone you know 
      FB.api('/me/friends', function(response) { 
       if(response.data) { 
       $.each(response.data,function(index,friend) { 
        alert(friend.name + ' has id:' + friend.id); 
       }); 
       } else { 
        alert("Error!"); 
        } 
      }); 
     } 
    }); 

您將獲得登錄用戶的好友列表。

更新回答: 不要在初始化時指定channelUrl。只給出以下四個參數。嘗試一下。

FB.init({ 
    appId  : 'some_id', // App ID 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    xfbml  : true // parse XFBML 
}); 

UPDATE2: 嘗試使用FQL:

if (response.session) { 

//getting current logged in user's id from session object 

globaluserid=response.session["uid"]; 

//fetching friends uids from 'friend' table. We are using FB.api syntax 

FB.api( 

{ 

method: 'fql.query', 

query: 'SELECT uid1 FROM friend WHERE uid2='+globaluserid 

}, 

function(response) { 

//once we get the response of above select query we are going to parse them 

for(i=0;i<response.length;i++) 

{ 

//fetching name and square profile photo of each friends 

FB.api( 

{ 

method: 'fql.query', 

query: 'SELECT name,pic_square FROM user WHERE uid='+response[i].uid1 

}, 

function(response) { 

//creating img tag with src from response and title as friend's name 

htmlcontent='<img src='+response[0].pic_square+' title='+response[0].name+' />'; 

//appending to div based on id. for this line we included jquery 

$("#friendslist").append(htmlcontent); 

} 

); 

} 

} 

); 

} else { 

// no user session available, someone you dont know 

top.location.href="../kfb_login.php"; 

} 
+0

我也無法登錄。我收到了Facebook API錯誤代碼191和API錯誤說明:指定的URL不屬於應用程序 錯誤消息:無效的redirect_uri:應用程序配置錯誤不允許給定的URL。我使用上面提到的一個將我的網站網址設置爲http://192.168.100.IP:8085 /這是我的localhost網址和頻道網址。但仍然無法登錄 – tejas 2012-01-27 07:16:54

+0

@tejas:檢查更新後的答案。 – 2012-01-27 08:51:03

+0

我試過了,但還是無法登錄。是否有任何額外的設置需要專注於應用程序?我已經設置了正常配置 – tejas 2012-01-27 10:11:19