0

我使用Facebook登錄和圖形API來列出用戶的所有圖片到我的網站,下面的代碼只對我工作的罰款是Facebook應用程序的管理員和所有者,當他使用Facebook登錄登錄網站時,它不適用於其他任何人。

代碼說明:當用戶登錄時,會調用名爲testAPI的函數獲取用戶基本信息,然後再調用FB.API進行權限訪問,最後再獲取圖片。

權限參數「RES」沒有得到任何其它的對用戶,但它的工作對我來說(管理員)。
繼承人的代碼:Fb的圖形API的權限不工作

<div id="fb-root"></div> 
<script> 
    // Additional JS functions here 
    window.fbAsyncInit = function() { 
    FB.init({ 
    appId  : MY_APP_ID, // App ID 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    xfbml  : true // parse XFBML 
    }); 


    FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
       testAPI(); 
} else if (response.status === 'not_authorized') { 
     login(); 
    } else { 
     login(); 
     } 
    }); 

    }; 


    function login() { 
     FB.login(function(response) { 
      if (response.authResponse) { 
      testAPI(); 
      } else { 
      // cancelled 
      } 
     },{scope:'user_photos',perms:'user_photos'}); 
    } 
    var id; 
    function testAPI() { 
    console.log('Welcome! Fetching your information.... '); 
    FB.api('/me', function(response) { 
    console.log('Good to see you, ' + response.name + '.'); 
    console.log(response); 
    id=response.id; 

var link='/'+ id + '/permissions?access_token=FB_GENERATED_ACCESS_TOKEN'; 
FB.api(link,function(res){ 
console.log("permissons: ",res); 
    link='/'+ id + '/photos?fields=images'; 
    FB.api(link, function(response) { 
     //placing all pictures 
     for(var i=0;i<response.data.length;i++) 
     { 
      var img="<img src="+response.data[i].images[0].source+" class='small' />"; 
     $("#images").append(img); 
    }  
     console.log(response); 
     });  

}); 

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

    <fb:login-button autologoutlink='true' 
    perms='email,user_birthday,status_update,publish_stream'></fb:login-button> 
<div id="images"></div> 
+1

您確定「沙盒模式」已關閉嗎? – gaurav 2013-02-19 18:55:53

+0

是沙箱是關閉 – 2013-02-20 03:59:33

回答

3

我收到了你的實際問題,

<fb:login-button autologoutlink='true' 
perms='email,user_birthday,status_update,publish_stream'></fb:login-button> 

你錯過了這裏,user_photos權限。你的JavaScript功能不打電話,是因爲FB:登錄按鈕自行做所有的東西。您的新代碼應該是:

<fb:login-button autologoutlink='true' 
    perms='email,user_birthday,status_update,publish_stream,user_photos'></fb:login-button> 
+0

啊....我現在用同樣的解決方案工作。 – 2013-02-25 12:27:01

+0

但功能登錄具有的FB.login方法與權限.......怎麼做呀..?我 – 2013-02-25 12:30:19

+0

'user_photos'不工作了。它直到今天都工作得很好 – 2014-04-03 16:06:01

0

相反

var link='/'+ id + '/permissions?access_token=FB_GENERATED_ACCESS_TOKEN'; 
FB.api(link,function(res){ 
console.log("permissons: ",res); 
link='/'+ id + '/photos?fields=images'; 
FB.api(link, function(response) { 
    //placing all pictures 
    for(var i=0;i<response.data.length;i++) 
    { 
     var img="<img src="+response.data[i].images[0].source+" class='small' />"; 
    $("#images").append(img); 
}  
    console.log(response); 
    });  

試試這個:

FB.api('/me/permissions', function (response) { 
    console.log("permissons: ", res); 
    var perms = response.data[0]; 

    if (perms.user_photos) { 

     FB.api('/me/photos?fields=images', function (response) { 
      //placing all pictures 
      for (var i = 0; i < response.data.length; i++) { 
       var img = "<img src=" + response.data[i].images[0].source + " class='small' />"; 
       $("#images").append(img); 
      } 
      console.log(response); 
     } else { 
      // User DOESN'T have permission. Perhaps ask for them again with FB.login? 
      login(); 
     } 
     });