使用JS SDK获取Facebook专辑封面照片URL

时间:2015-12-01 09:38:14

标签: javascript facebook facebook-graph-api

如果我没有正确格式化,我会提前表示道歉。

我有一个将用户登录到他们的Facebook帐户的程序,我想显示他们的专辑,到目前为止我只是想获取他们的Facebook专辑封面照片,但我一直收到不好的请求。

function getAlbumName(access_token, userID) {
  FB.api('/me/albums', { fields: 'id, name, cover_photo' }, function (response) {
    console.log(response.data);
    var ul = document.getElementById('albums');
    for (var i = 0; i < response.data.length; i++) {
      var
        album = response.data[i],
        li = document.createElement('li'),
        div = document.createElement('div'),
        img = document.createElement('img'),
        p = document.createElement('p');
        //a = document.createElement('a');

      img.src = "http://graph.facebook.com/" + userID + "/" + album.id + "/"
      + album.cover_photo.id + "/picture?type=thumbnail&access_token=" + access_token;
      div.setAttribute('class', 'album.info');
      p.innerHTML = album.name;

      div.appendChild(img);
      div.appendChild(p);
      li.appendChild(div);
      ul.appendChild(li);
      //getAlbumPhotos();

      function getAlbumPhotos() {
        FB.api('me/' + album.id + '/photos', function (response) {
          console.log(response.data);
          var parentli = document.getElementsByTagName(li);
          for (var j = 0; j < album.count; j++) {
            var
              photo = response.data[j],
              img = document.createElement('img').setAttribute("id", photo.id)
                .setAttribute('src', "http://graph.facebook.com/" + album.id + "/" + photo.id);

            childul = document.createElement('ul');

            li.appendChild(img);
            childul.appendChild(li);
            parentli.appendChild(childul);
          }
        })
      }
    }
  });
};

目前使用此代码我收到以下错误:

Uncaught TypeError: Cannot read property 'id' of undefined
GET http://graph.facebook.com/[user-id]/[album-id]/[cover-photo-id]/picture?type=thumbnail&access_token=[access-token] 400 (Bad Request)

如果有什么我忘了添加帮助,请告诉我,谢谢。

1 个答案:

答案 0 :(得分:0)

格式好,不要担心:)

album实际上是未定义的,因为您没有在函数的参数中传递它。所以它不在getAlbumPhotos&#39;范围。

只需将getAlbumPhotos的声明替换为

function getAlbumPhotos(album){

并取消注释调用此函数的行并在参数中添加album

getAlbumPhotos(album);

提示:

您可以将函数getAlbumPhotos放在for循环之外。