Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有一种方法可以通过Facebook的API来翻页照片?_Javascript_Facebook_Facebook Graph Api - Fatal编程技术网

Javascript 有没有一种方法可以通过Facebook的API来翻页照片?

Javascript 有没有一种方法可以通过Facebook的API来翻页照片?,javascript,facebook,facebook-graph-api,Javascript,Facebook,Facebook Graph Api,我想从Facebook上下载我所有的照片,并按上传日期排序。嗯,没有第三方工具或Facebook使用日期,所以我写了自己的应用程序。它是一个简单的应用程序,可以循环浏览相册,获取每个照片的url、创建时间和Id,存储在一个数组中,然后将数组传递给控制器。控制器获取图片数据,将其转换为图像,然后保存到我的文件系统 我花了半天时间学习facebook api,了解到他们将每次通话的照片数量限制在100张,我认为每600秒有600个请求 我可以接受每600秒600个请求的限制,因为我可以在几天内得到前

我想从Facebook上下载我所有的照片,并按上传日期排序。嗯,没有第三方工具或Facebook使用日期,所以我写了自己的应用程序。它是一个简单的应用程序,可以循环浏览相册,获取每个照片的url、创建时间和Id,存储在一个数组中,然后将数组传递给控制器。控制器获取图片数据,将其转换为图像,然后保存到我的文件系统

我花了半天时间学习facebook api,了解到他们将每次通话的照片数量限制在100张,我认为每600秒有600个请求

我可以接受每600秒600个请求的限制,因为我可以在几天内得到前100个,然后是第二个,第三个,等等。然而,我的主要问题是知道从哪里开始和停止(以编程方式)

这就是我到目前为止所做的,为了简洁起见,没有任何一个函数:

Javascript:

function getPhotos(callback) {
        var allPhotos = [];
        var accessToken = '';

        login(function (loginResponse) {
            accessToken = loginResponse.authResponse.accessToken || '';
            getAlbums(function (albumResponse) {
                var i, album, deferreds = {}, listOfDeferreds = [];
                for (i = 0; i < 1; i++) { //albumResponse.data.length
                    album = albumResponse.data[i];
                    deferreds[album.id] = $.Deferred();
                    listOfDeferreds.push(deferreds[album.id]);
                    getPhotosForAlbumId(album.id, function (albumId, albumPhotosResponse) {
                        var i, facebookPhoto;
                        for (i = 0; i < albumPhotosResponse.data.length; i++) {
                            facebookPhoto = albumPhotosResponse.data[i];
                            allPhotos.push({
                                'id': facebookPhoto.id,
                                'added': facebookPhoto.created_time,
                                'url': makeFacebookPhotoURL(facebookPhoto.id, accessToken)
                            });


                        }
                        deferreds[albumId].resolve();
                    });
                }
                $.when.apply($, listOfDeferreds).then(function () {
                    if (callback) {
                        callback(allPhotos);
                        downloadPhoto(allPhotos);
                    }
                }, function (error) {
                    if (callback) {
                        callback(allPhotos, error);
                    }
                });
            });
        });

function downloadPhoto(allPhotos) {
        $.ajax({
            url: '/home/download/',
            type: 'POST',
            data: { allPhotos: allPhotos },
            success: function() {
                //alert('success');
            },
            error: function() {
                alert('error');
            }
        });
    }

function getPhotosForAlbumId(albumId, callback) {
        FB.api(
            '/' + albumId + '/photos',
            { fields: 'id,created_time' },
            function(albumPhotosResponse) {
                if (callback) {
                    callback(albumId, albumPhotosResponse);
                }
            }
        );
    }
函数getPhotos(回调){ var-allPhotos=[]; var accessToken=''; 登录(功能(loginResponse){ accessToken=loginResponse.authResponse.accessToken | |“”; getAlbums(函数(albumResponse){ 变量i,相册,延迟={},listOfDeferreds=[]; 对于(i=0;i<1;i++){//albumResponse.data.length album=albumResponse.data[i]; 延迟[album.id]=$.Deferred(); listOfDeferreds.push(延迟[album.id]); getPhotosForAlbumId(album.id,函数(albumId,albumPhotosResponse){ var i,facebookPhoto; 对于(i=0;i 控制器:

public ActionResult Download(List<Photo> allPhotos)
    {
        if (allPhotos != null)
        {
            var i = 0;
            foreach (var photo in allPhotos)
            {
                using (WebClient webClient = new WebClient())
                {
                    byte[] data = webClient.DownloadData(photo.url);

                    using (MemoryStream mem = new MemoryStream(data))
                    {
                        using (var yourImage = Image.FromStream(mem))
                        {
                            // If you want it as Png
                            //yourImage.Save("path_to_your_file.png", ImageFormat.Png);

                            // If you want it as Jpeg
                            string x = @"C:\Users\xxxx\Pictures\" + photo.added.ToString("yyyyMMddHHmmss") + "_" + i + ".jpg";
                            yourImage.Save(x, ImageFormat.Jpeg);
                            i++;
                        }
                    }

                }
            }
        }
        return Json(new { success = true });
    }
公共行动结果下载(列出所有照片)
{
如果(所有照片!=null)
{
var i=0;
foreach(所有照片中的var照片)
{
使用(WebClient WebClient=new WebClient())
{
byte[]data=webClient.DownloadData(photo.url);
使用(MemoryStream mem=新的MemoryStream(数据))
{
使用(var yourImage=Image.FromStream(mem))
{
//如果你想把它变成Png
//Save(“path_to_your_file.png”,ImageFormat.png);
//如果你想要它的Jpeg格式
字符串x=@“C:\Users\xxxx\Pictures\”+photo.added.ToString(“yyyyMMddHHmmss”)+““+i+”.jpg”;
保存(x,ImageFormat.Jpeg);
i++;
}
}
}
}
}
返回Json(新的{success=true});
}

您应该使用API响应中提供的分页URL。请求“上一个”一个,直到没有更多数据为止。我从相册响应中获取了分页数据,但不是相册中的照片。请检查何时不再获取“下一个”分页链接,或者数据数组为空。您应该使用API响应中提供的分页URL。请求“上一个”一个,直到没有更多的数据为止。我从相册响应中获得了分页数据,但不是相册中的照片。请检查何时不再获得“下一个”分页链接,或者数据数组为空。