Facebook API使用Reviewer的个人资料图片获取页面评论

时间:2017-05-09 16:59:08

标签: javascript jquery facebook facebook-graph-api facebook-javascript-sdk

我在获取评论者的个人资料图片时遇到问题,我需要将其与页面评论一起使用。

所以这是我的代码来显示页面的评论(我只使用8行结果)

<script type="text/javascript">

  $(document).ready(function() {
    $.ajaxSetup({ cache: true });
    $.getScript('//connect.facebook.net/en_US/sdk.js', function(){
      FB.init({
        appId: '146098578760813',
        version: 'v2.9' // or v2.1, v2.2, v2.3, ...
      });     

     FB.api(
       '/146098578760813',
       'GET',
       {"fields":"ratings",
       "access_token":"EAACEdEose0cBAAHqbBtNJzh7vC0C9PnSuV9AX910AlAUTHaP8cZArkE9NXPQUZB01jFOZAhNMXXdd0yIxwgxJZAulCGoDNXzEsRB04sRHlZB7Rkh1SCuiMDIzRqnX0l4ZAQe0AtTOh2CZCRsHXk49eWTQi0K5rZCedu852wV4A7AjcbIZBHsZBL5GiUfKifitIwT0ZD"},
       function(response) {
         var div = document.getElementById('conReviews');
        console.log(response.ratings.data[0]);
        console.log(response.ratings.data[0].review_text);
        var review=[];
        var reviewer_name=[];
        var reviewer_photo=[];
        var reviewer_id=[];
        for(var i=0; i<8; i++){

           if(response.ratings.data[i].review_text!=null){
              review[i]=response.ratings.data[i].review_text;
              reviewer_name[i]=response.ratings.data[i].reviewer.name;
              reviewer_id[i]=response.ratings.data[i].reviewer.id;

              var c="asd";
               FB.api(
                '/'+response.ratings.data[i].reviewer.id+'/picture',
                'GET',
                {"type":"large","w‌​idth":"200","height":"200"},
                function(response2) {

                    c=response2.data.url;


                }
              );
               reviewer_photo[i]=c;



              console.log(review[i]);
              console.log(reviewer_name[i]);
              console.log(reviewer_photo[i]);

        div.innerHTML=div.innerHTML+
        ' <div class="shortcode-tour-reviews__item">'+
        '<div class="shortcode-tour-reviews__item__info" id="photo_'+reviewer_id[i]+'">'+
           '<img alt="" class="avatar avatar-95 photo avatar-default" height="95" src="'+reviewer_photo[i]+'" srcset="'+reviewer_photo[i]+'" width="95"/>'+
           '<div class="shortcode-tour-reviews__item__info__name">'+

           '</div>'+
        '</div>'+
        '<div class="shortcode-tour-reviews__item__content">'+
           '<h3 class="shortcode-tour-reviews__item__title">'+
              '<a href="#/page/pages/view/page/17">'+
                 reviewer_name[i]+
              '</a>'+
           '</h3>'+
           '<div class="shortcode-tour-reviews__item__description">'+
              review[i]+
           '</div>'+
           '<div class="shortcode-tour-reviews__item__rating">'+

           '</div>'+
        '</div>'+
     '</div>';


           }


        }



       }
     );
    });
  });

当我运行代码时,用户个人资料图片是 response2.data.url 值是正确的。它显示了评论者的个人资料图片的网址。我做了 console.log 以确保结果是正确的。

然后我想在 c 变量中存储图片网址的值,然后出现问题。

c 变量不会改变。它保持包含&#34; asd&#34; 值。

我试图在代码中添加警告,就像这样

    var c="asd";
 FB.api(
  '/'+response.ratings.data[i].reviewer.id+'/picture',
  'GET',
  {"type":"large","w‌​idth":"200","height":"200"},
  function(response2) {

      c=response2.data.url;
      alert(c);

  }
);
 reviewer_photo[i]=c;

它显示了审阅者的正确网址图像。但同样, reviewer_photo [i] 继续显示asd而不是图片网址(在console.log中查看)

我试图在document.ready函数之外分离第二个FB.api调用并创建它的新函数然后在主FB.api调用中调用它,但它也没有用。

我该如何解决这个问题?谢谢你:)

P.S:我已经阅读了编辑回调的教程,但我似乎很难用我的案例实现回调,那么有人可以帮我展示我案例的最佳解决方案吗?谢谢:)

0 个答案:

没有答案