Die Facebook-Grafik-API sagt mir, dass ich mit ein Profilbild eines Benutzers erhalten kann
http://graph.facebook.com/517267866/picture?type=large
das funktioniert gut. Wenn Sie jedoch die obige URL in einen Browser eingeben, lautet die tatsächliche Adresse des Bildes
http://profile.ak.fbcdn.net/profile-ak-snc1/v227/560/83/n517267866_1928.jpg
Wie kann ich die zweite URL programmgesteuert über die erste URL abrufen?
Antworten:
Die erste URL gibt eine HTTP 302 (temporäre Umleitung) an die zweite weiter. Um die zweite URL programmgesteuert zu finden, können Sie eine HTTP-Anforderung für die erste URL ausgeben und den
Location
Header der Antwort abrufen.Verlassen Sie sich jedoch nicht darauf, dass die zweite URL dauerhaft ist. Wenn Sie den HTTP-Antwortcode ein wenig lesen (von 302 im Gegensatz zu einem permanenten 301), ist es möglich, dass Facebook diese URLs regelmäßig ändert, um zu verhindern, dass Benutzer beispielsweise ihre Server zum Hosten von Bildern verwenden.
Bearbeiten: Beachten Sie, dass die vom OP veröffentlichte CDN-URL jetzt 404 ist. Wir wissen also, dass wir uns nicht darauf verlassen können, dass die URL langlebig ist. Wenn Sie
<img>
auf einer SSL-gesicherten Seite eine Verknüpfung zur Graph-API herstellen , müssenSieeinen Parameter hinzufügen,um sicherzustellen, dass Sie ihn verwenden .https://graph.facebook.com
Update: Die API hat einen Parameter -
redirect=false
- hinzugefügt, der bewirkt, dass JSON anstelle einer Umleitung zurückgegeben wird. Der neu abgestimmte JSON enthält die CDN-URL:Auch hier würde ich mich nicht darauf verlassen, dass diese CDN-URL langlebig ist. Die JSON-Antwort wird mit zulässigen CORS-Headern gesendet, sodass Sie diese clientseitige Ausführung mit XHR-Anforderungen durchführen können.
quelle
content-disposition: attachment
und sindcontent-type: image/jpeg
.http://graph.facebook.com/517267866/?fields=picture&type=large
Würde die URL in JSON zurückgeben
quelle
Mir ist klar, dass dies zu spät ist, aber es gibt noch eine andere Möglichkeit, die URL des Profilbilds abzurufen.
Zu Ihrer ursprünglichen URL können Sie den Parameter hinzufügen
redirect=false
, um die tatsächliche URL des Bildes zu erhalten, zu dem Sie normalerweise umgeleitet werden.Die neue Anfrage würde also wie folgt aussehen: http://graph.facebook.com/517267866/picture?type=large&redirect=false . Dies gibt ein JSON-Objekt zurück, das die URL des Bildes und eine boolesche is_silhouette enthält (true, wenn das Bild das Standard-Facebook-Bild ist).
Das Bild hat ebenfalls die von Ihnen angegebene Größe. Sie können dies zusätzlich testen, indem Sie Dimensionen hinzufügen: http://graph.facebook.com/517267866/picture?type=large&redirect=false&width=400&height=400
quelle
Für alle anderen, die das Profilbild in iOS erhalten möchten:
Ich habe dies nur getan, um das Facebook-Bild des Benutzers zu erhalten:
Dabei ist 'fbUserID' die Profil-ID des Facebook-Benutzers.
Auf diese Weise kann ich immer nur die URL in profilePicURL aufrufen, um das Bild zu erhalten, und ich bekomme es immer, kein Problem. Wenn Sie die Benutzer-ID bereits haben, benötigen Sie keine API-Anforderungen. Stecken Sie die ID einfach in die URL nach facebook.com/.
Zu Ihrer Information an alle, die die fbUserID in iOS benötigen:
Damit dies funktioniert, benötigen Sie eine aktive FBSession (siehe Facebook-Dokumente und das Beispiel "Scrumptious").
quelle
Wenn Sie den JSON eines qualitativ hochwertigen Profilbilds mit der URL wünschen, können Sie Folgendes verwenden:
http://graph.facebook.com/517267866/picture?height=1024&redirect=false
Wenn Sie nur das Bild benötigen, verwenden Sie es ohne die Parameterumleitung:
http://graph.facebook.com/517267866/picture?height=1024
517267866 ist die Profil-ID eines der obigen Beispiele. Geben Sie die Facebook-ID ein, die Sie benötigen
Ich hoffe das hilft
quelle
https://graph.facebook.com/XXXXX/picture?height=1024
lädt der Browser für die URL das Bild herunter, anstatt es anzuzeigen. Irgendeine Idee warum?Dadurch wird die von Ihnen angeforderte URL zurückgegeben, und das Problem, die URL über Facebook zu ändern, spielt keine Rolle, da Sie die URL dynamisch von der ursprünglichen URL aufrufen.
quelle
Dies ist die einzige, die wirklich funktioniert:
wo Yourtype klein, normal, Album, groß, quadratisch: kann einer der folgenden sein
quelle
Für Android:
Laut aktuellem Facebook SDK,
Zuerst müssen Sie anrufen
GraphRequest API
, um alle Details des Benutzers zu erhalten, in demAPI
auch angegeben istURL of current Profile Picture
.quelle
quelle
Jetzt braucht Facebook SSL
-> Wichtig hinzugefügt S, https -> https://graph.facebook.com/userId/?fields=picture&type=large
Arbeitet im Juni / 2014
quelle
Hmm..Ich habe alles versucht, um die URL zum Benutzerbild zu bekommen. Die perfekte Lösung war die Verwendung von fql wie folgt->
Ersetzen Sie pic durch big, pic_square, um andere gewünschte Ergebnisse zu erzielen. Hoffe, es hat geholfen ...
quelle
Wobei ID eine Ihrer Profil-IDs ist .
quelle