Ответ 1
Зная идентификатор пользователя, URL для изображения их профиля: -
http://graph.facebook.com/[UID]/picture
где вместо [UID] вы поместите свою переменную $uid, и этот URL-адрес можно передать в flash
Я хотел бы отобразить изображение профиля пользователя внутри моей страницы холстов приложений, есть ли способ сделать это с помощью графика api?
Я знаю, что могу сделать это с помощью FBML, но я также хотел бы передать профиль pic в флеш-игру, которую я создаю, поэтому мне нужно будет получить профиль pic из api и отправить его как переменную, вот код, который у меня есть до сих пор,
$facebook = new Facebook(array(
'appId' => FACEBOOK_APP_ID,
'secret' => FACEBOOK_SECRET_KEY,
'cookie' => true,
'domain' => 'myurl/facebook-test'
));
$session = $facebook->getSession();
$uid = $facebook->getUser();
$me = $facebook->api('/me');
$updated = date("l, F j, Y", strtotime($me['updated_time']));
echo "Hello " . $me['name'] . $me['picture'] . "<br />";
echo "<div style=\"background:url(images/bg.jpg); width:760px; height:630px;\">" . "You last updated your profile on " . $updated . "</div>" . "<br /> your uid is" . $uid;
$me['picture']
, похоже, не работает, но я все еще очень новичок в графике api, и я, вероятно, делаю несколько очень любительских ошибок!
Зная идентификатор пользователя, URL для изображения их профиля: -
http://graph.facebook.com/[UID]/picture
где вместо [UID] вы поместите свою переменную $uid, и этот URL-адрес можно передать в flash
чтобы получить разные размеры, вы можете использовать параметр типа:
Вы можете указать размер изображения, который вы хотите, с аргументом типа, который должен быть одним из квадратных (50x50), малым (шириной 50 пикселей, переменной высотой) и большим (ширина около 200 пикселей, переменная высота): http://graph.facebook.com/squall3d/picture?type=large.
Вы также можете изменить размер изображения профиля, указав параметры, как показано ниже.
https://graph.facebook.com/[UID]/picture?width=140&height=140
будет работать тоже.
//create the url
$profile_pic = "http://graph.facebook.com/".$uid."/picture";
//echo the image out
echo "<img src=\"" . $profile_pic . "\" />";
Работает отлично для меня
ИЗМЕНИТЬ. Так что facebook снова изменил его! Больше не искать по имени пользователя - изменили ответ ниже...
https://graph.facebook.com/{{UID}}/picture?redirect=false&height=200&width=200
например. https://graph.facebook.com/4/picture?redirect=false&height=200&width=200
Вот код, который работал у меня!
Предполагая, что у вас есть действительный сеанс,
//Get the current users id
$uid = $facebook->getUser();
//create the url
$profile_pic = "http://graph.facebook.com/".$uid."/picture";
//echo the image out
echo "<img src=\"" . $profile_pic . "\" />";
Тханкс идет к Рейну, ты, да!
У меня возникла проблема с получением фотографий профиля при использовании CURL. Я подумал, что какое-то время было неправильно реализовано API Facebook, но мне нужно добавить немного к моей CURL:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
Очень важно, что, как и другой запрос API Графика, вы не получите данные JSON в ответ, а вызов возвращает HTTP REDIRECT в URL-адрес профиля pic. Итак, если вы хотите получить URL-адрес, вам нужно либо прочитать HTTP-заголовок ответа, либо использовать FQL.
Возвращаемые данные - это двоичные данные типа изображения. Если вы используете JavaScript для получения пользовательской фотографии, получите данные фотографии в виде типа BLOB-объекта в XMLHttpRequest, а затем получите URL-адрес BLOB-объекта из ответа. Для справки:
var request = new XMLHttpRequest;
var photoUri=config.endpoints.graphApiUri + "/v1.0/me/photo/$value";
request.open("GET",photoUri);
request.setRequestHeader("Authorization","Bearer "+token);
request.responseType = "blob";
request.onload = function (){
if(request.readyState == 4 && request.status == 200){
var image = document.createElement("img");
var url = window.URL || window.webkitURL;
var blobUrl = url.createObjectURL(request.response);
image.src = blobUrl;
document.getElementById("UserShow").appendChild(image);
}
};
request.send(null);