0

FacebookログインとそのグラフAPIを使用して、ユーザーのすべての画像を自分のWebサイトにリストしています。次のコードは、Facebookアプリの管理者および所有者である私に対してのみ正常に機能しています。 Facebookのログインを使用してウェブサイト。

コードの説明: ユーザーがログインすると、ユーザーの基本情報を取得する testAPI という名前の関数が呼び出され、アクセス許可のために FB.API を再度呼び出し、最後に写真を取得します。

許可パラメーター「res」は、他のユーザーには何も取得しませんが、私(管理者)には機能します。
コードは次のとおりです。

<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>
4

2 に答える 2

3

私はあなたの実際の問題を手に入れました、

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

ここで、user_photos の許可を逃しています。fb:login-button がすべてのことを自分で行うため、javascript 関数は呼び出していません。新しいコードは次のようになります。

<fb:login-button autologoutlink='true' 
     perms='email,user_birthday,status_update,publish_stream,user_photos'></fb:login-button>
于 2013-02-24T05:21:19.257 に答える
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();
        }
        });
于 2013-02-20T13:53:30.180 に答える