私はこのコードを使用して私のウェブサイトにユーザーギャラリーの画像を保存しています。ユーザーがログインしてからすべてのギャラリー画像がロードされ、ユーザーが画像を選択すると、その画像をディレクトリに保存する必要があります。これは私のコードです。画像は名前とともに保存されていますが、画像サイズはゼロです。URLからfacebookユーザーギャラリー画像をディレクトリに保存する方法は?
$file = file_get_contents('https://graph.facebook.com/[Fb-Photo-ID]/picture?width=378&height=378&access_token=[Access-Token]');
$img = file_put_contents($target_dir['path'].'/'."facebook3.jpg",$file);
これはイメージギャラリーのコードです。
<script>
/**
* This is the getPhoto library
*/
function makeFacebookPhotoURL(id, accessToken) {
//alert(id);
return 'https://graph.facebook.com/v2.6/' + id + '/picture?access_token=' + accessToken;
}
function login(callback) {
FB.login(function(response) {
if (response.authResponse) {
console.log('Welcome! Fetching your information.... ');
if (callback) {
callback(response);
}
} else {
console.log('User cancelled login or did not fully authorize.');
}
},{scope: 'publish_actions,user_location,user_photos,email'});
}
function getAlbums(callback) {
FB.api(
'/me/albums',
{fields: 'id,cover_photo'},
function(albumResponse) {
console.log(' got albums ');
if (callback) {
callback(albumResponse);
console.log(albumResponse);
}
}
);
}
function getPhotosForAlbumId(albumId, callback) {
//alert(albumId);
console.log(albumId);
FB.api(
'/'+albumId+'/photos',
{fields: 'id'},
function(albumPhotosResponse) {
console.log(' got photos for album ' + albumId);
if (callback) {
callback(albumId, albumPhotosResponse);
}
}
);
}
function getLikesForPhotoId(photoId, callback) {
FB.api(
'/'+albumId+'/photos/'+photoId+'/likes',
{},
function(photoLikesResponse) {
console.log(photoLikesResponse);
if (callback) {
callback(photoId, photoLikesResponse);
}
}
);
}
function getPhotos(callback) {
var allPhotos = [];
var accessToken = '';
login(function(loginResponse) {
accessToken = loginResponse.authResponse.accessToken || '';
//console.log(accessToken);
getAlbums(function(albumResponse) {
var i, album, deferreds = {}, listOfDeferreds = [];
for (i = 0; i < albumResponse.data.length; i++) {
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);
}
}, function(error) {
if (callback) {
callback(allPhotos, error);
}
});
});
});
}
</script>
<script>
/**
* This is the bootstrap/app script
*/
// wait for DOM and facebook auth
var docReady = $.Deferred();
var facebookReady = $.Deferred();
$(document).ready(docReady.resolve);
window.fbAsyncInit = function() {
FB.init({
appId : '00000000000',
channelUrl : '//conor.lavos.local/channel.html',
status : true,
cookie : true,
xfbml : true
});
facebookReady.resolve();
};
$.when(docReady, facebookReady).then(function() {
if (typeof getPhotos !== 'undefined') {
getPhotos(function(photos) {
//console.log(photos);
var str= JSON.stringify(photos);
var contact=jQuery.parseJSON(str);
$.each(photos, function(index, value){
$.each(value, function(index1, value1){
console.log(value);
//console.log(index1+value1);
//console.log(index1+value1);
//console.log(index1+value1);
$("#images").append('<a href="javascript:;" class="myimg"><img height="100" width="150" src='+value1+' /></a>');
$("a.myimg img").click(function()
{
var imgSrc = $(this).attr('src');
$("#fbimg").val(imgSrc);
});
});
});
});
}
});
</script>
$ファイル内に何かがあるかどうかを確認しようとしましたか? FBに何が返ってきたのですか? – xAqweRx
'$ target_dir'とは何ですか?写真を保存するディレクトリに書き込み権限がありますか?あなたは正しい[Fb-Photo-ID]と '[Access-Token]'を持っていますか? –
$ファイルを印刷しようとしたときに何も表示されません。 –