Ich möchte das Benutzerprofilbild auf der Canvas-Seite meiner Anwendung anzeigen. Gibt es eine Möglichkeit, dies mithilfe der Grafik-API zu tun?
Ich weiß, dass ich es mit FBML machen kann, aber ich möchte das Profilbild auch an ein Flash-Spiel übergeben, das ich mache. Daher müsste ich das Profilbild von der API abrufen und als Variable senden. Hier ist der Code I. habe bisher
$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']
scheint nicht zu funktionieren, aber ich bin noch sehr neu in der Grafik-API und mache wahrscheinlich ein paar sehr amateurhafte Fehler!
php
facebook
facebook-graph-api
Odyss3us
quelle
quelle
https
anstelle von verwendenhttp
, wenn Sie verwendenPicasso
.Um verschiedene Größen zu erhalten, können Sie den Typparameter verwenden:
Sie können die gewünschte Bildgröße mit dem Typargument angeben, das quadratisch (50 x 50), klein (50 Pixel breit, variable Höhe) und groß (ca. 200 Pixel breit, variable Höhe) sein soll: http: // graph .facebook.com / squall3d / picture? type = large .
quelle
Sie können die Größe des Profilbilds auch ändern, indem Sie die unten gezeigten Parameter angeben.
https://graph.facebook.com/[UID]/picture?width=140&height=140
würde auch funktionieren.
quelle
When height and width are both used, the image will be scaled as close to the dimensions as possible and then cropped down.
es, dass sie eine vordefinierte Größe 123x123 zurückgeben, wenn ich nach 150x150 frage?/picture?width=450x450
ich danach frage, werde ich zum Bild weitergeleitet:https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xap1/v/t1.0-1/c120.0.480.480/p480x480/10525666_10154418313275648_598202092662269872_n.jpg?somequerystring
welches ein480x480
Bild ist. Und wenn ich danach frage, werde/picture?width=300&height=300
ich zuhttps://fbcdn-profile-a.akamaihd.net/hprofile-ak-xap1/v/t1.0-1/c80.0.320.320/p320x320/10525666_10154418313275648_598202092662269872_n.jpg
dem320x320
Bild weitergeleitet. Sie haben also Recht mit vordefinierten Größen.//create the url $profile_pic = "http://graph.facebook.com/".$uid."/picture"; //echo the image out echo "<img src=\"" . $profile_pic . "\" />";
Funktioniert gut für mich
quelle
EDIT : Also Facebook hat es wieder geändert! Keine Suche mehr nach Benutzername - habe die Antwort unten geändert ...
https://graph.facebook.com/{{UID}}/picture?redirect=false&height=200&width=200
zB https://graph.facebook.com/4/picture?redirect=false&height=200&width=200
Facebook Graph Bilddokument
quelle
http://graph.facebook.com/[UID]/picture
funktioniert! Gibt es eine Obergrenze für die Häufigkeit, mit der ich diesen API-Aufruf ausführen kann?Hier ist der Code, der für mich funktioniert hat!
Angenommen, Sie haben eine gültige Sitzung,
//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 . "\" />";
Danke geht an Raine, du da Mann!
quelle
Ich hatte Probleme beim Abrufen von Profilfotos während der Verwendung von CURL. Ich dachte eine Weile, dass bei der Implementierung der Facebook-API etwas nicht stimmt, aber ich muss meiner CURL etwas hinzufügen, das heißt:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
quelle
Eine sehr wichtige Sache ist, dass Sie wie bei anderen Graph API-Anforderungen keine JSON-Daten als Antwort erhalten, sondern dass der Aufruf eine HTTP-Weiterleitung an die URL des Profilbilds zurückgibt. Wenn Sie also die URL abrufen möchten, müssen Sie entweder den Antwort-HTTP-Header lesen oder Sie können FQLs verwenden.
quelle
Die zurückgegebenen Daten sind die Binärdaten des Bildtyps. Wenn Sie das Benutzerfoto mit JavaScript abrufen, rufen Sie die Fotodaten als Blob-Typ in eine XMLHttpRequest ab und rufen Sie dann die Blob-URL aus der Antwort ab. Als Referenz:
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);
quelle