使用JS SDK获取Facebook相册封面照片URL

Get Facebook Album Cover Photo URL with JS SDK

本文关键字:封面 照片 URL Facebook JS SDK 获取 使用      更新时间:2023-09-26

我是新来的,所以如果我没有正确格式化,请提前道歉。

我有一个程序,可以将用户登录到他们的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)

如果有什么我忘了添加的东西,请告诉我,谢谢。

格式好,不用担心:)

album实际上是未定义的,因为您并没有在函数的参数中传递它。因此,它不在getAlbumPhotos的范围内。

只需将getAlbumPhotos的声明替换为

function getAlbumPhotos(album){

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

getAlbumPhotos(album);

提示:

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