2014-09-16 4 views
3
I am getting user info but unable to get friend list.  

<script> 
    function sortMethod(a, b) { 
     var x = a.name.toLowerCase(); 
     var y = b.name.toLowerCase(); 
     return ((x < y) ? -1 : ((x > y) ? 1 : 0)); 
    } 

    window.fbAsyncInit = function() { 
     FB.init({ appId: 'xxxxxxxxx', 
      status: true, 
      cookie: true, 
      xfbml: true, 
      oauth: true 
     }); 

     function updateButton(response) { 
      var button = document.getElementById('fb-auth'); 

      if (response.authResponse) { // in case if we are logged in 
       var userInfo = document.getElementById('user-info'); 
       FB.api('/me', function(response) { 
        userInfo.innerHTML = '<img src="https://graph.facebook.com/' + response.id + '/picture">' + response.name; 
        button.innerHTML = 'Logout'; 
       }); 

       // get friends 
       FB.api('/me/invitable_friends', function(response) { 
        var result_holder = document.getElementById('result_friends'); 
        var friend_data = response.data.sort(sortMethod); 

        var results = ''; 
        for (var i = 0; i < friend_data.length; i++) { 
         results += '<div><img src="https://graph.facebook.com/' + friend_data[i].id + '/picture">' + friend_data[i].name + '</div>'; 
        } 

        // and display them at our holder element 
        result_holder.innerHTML = '<h2>Result list of your friends:</h2>' + results; 
       }); 

       button.onclick = function() { 
        FB.logout(function(response) { 
         window.location.reload(); 
        }); 
       }; 
      } else { // otherwise - dispay login button 
       button.onclick = function() { 
        FB.login(function(response) { 
         if (response.authResponse) { 
          window.location.reload(); 
         } 
        }, {scope:'email'}); 
       } 
      } 
     } 

     // run once with current status and whenever the status changes 
     FB.getLoginStatus(updateButton); 
     FB.Event.subscribe('auth.statusChange', updateButton);  
    }; 

    (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); 
    }()); 
    </script> 

사용자가 로그인하는 중입니다. Facebook 친구 목록을 표시 할 수 없습니다.js api에서 facebook 친구 목록 가져 오기

코드가 새 SDK 전에 작동했습니다. 나를 초대하기 전에 invitable_friends를 사용합니다.

아무도 도와주세요.

또한이 외에도 다른 방법이 있습니까? 당신은 /me/friends/me/invitable_friends 모두이 필요

FB.login(function(response) { 
    if (response.authResponse) { 
     window.location.reload(); 
    } 
}, {scope:'email,user_friends'}); 

를, 페이스 북 문서를 참조하십시오 : 당신은 단지 사람을 사용하는 친구를 얻을 것이다 있지만 https://developers.facebook.com/docs/games/invitable-friends/v2.1

+0

친구 목록이 무엇이 필요합니까? API v2를 사용하면 동일한 앱을 사용하는 사용자의 친구 만 얻을 수 있습니다. 그리고'invitable_friends'는 게임 카테고리의 캔버스 앱에서만 사용됩니다. 그 카테고리에 앱이 없다면'invitable_friends'를 다른 것으로 오용하지 마십시오. – CBroe

+0

친구 목록을 얻을 수없는 간단한 앱을 만들고 있습니다. – Vinay

답변

3

당신은 인증 과정에서 user_friends을 요청합니다 앱도 /me/friends입니다. 자세한 내용은 changelog를 참조하십시오. https://developers.facebook.com/docs/apps/changelog

귀하의 질문에 CBroe가 언급 한 내용 역시 매우 중요합니다. invitable_friends는 facebook.com에서만 게임 전용입니다.

0

앱이 공개되어 있고 앱을 사용하는 친구 중 일부가 살고 있다면 해당 앱의 목록을 얻을 수 있습니다. 또한 응용 프로그램을 사용하는 친구의 한 사람의 목록에 대한 액세스를 제공합니다 -

user_friends가 :

은 문서 상태 #reference-user_friends 무엇을 참조하십시오.

그런 다음 원하는 것을 볼 수 있습니다.

FB.api('/me/friends', function(response){ 
    console.log(response); 
}, {scope: 'user_friends'}); 
관련 문제