jahadesignMedlem sedan okt. 200621 inlägg
Försöker komma på ett sätt att få fram URLen till profilbilden alt. thumbnailen på facebook från en extern sida (alltså ingen facebook application).
Vill att användaren bara behöver skriva in sitt id.
Är det möjligt att med php gå igenom profilsidan och leta fram adressen till en bild som ligger i en div-tag med id XXX?
sl0kMedlem sedan maj 2005523 inlägg
Du kommer inte in på FB utan att vara inloggad. Det är därför inte lätt att hitta adressen till en profilbild utefter enbart id.
Adressen till profilbilderna är i stil med:
http://profile.ak.facebook.com/profile<Nummer>/<Nummer>/<Nummer>/n<PROFIL_ID>_<Nummer>.jpg
Där varje <Nummer> skall ersättas med en flersiffrig talföljd.
jahadesignMedlem sedan okt. 200621 inlägg
Nej förmodligen så blir det svårt. Dock kan man ju söka fram en användare och se bild utan att vara inloggad, men man kan inte söka på id så det spelar inte så stor roll... Får nog ge upp.
jahadesignMedlem sedan okt. 200621 inlägg
Såg att om man inte är inloggad och försöker gå in på någons profil (facebook.com/profile.php?id=XXXXXXXXX) så kommer man till en sida där profilbilden visas.
Med hjälp av sidan dapper.com har jag nu lyckats skapa en applikation som hämtar just adressen till den profilbilden genom att bara skriva in user id.
http://www.dapper.net/transform.php?dappName=fbookprofilepic&transformer=CSV&extraArg_fields[]=profilepic%40src&v_userid=XXXXXXXXX
(Ändra XXXXXXXXX till valfritt userid för att testa...t.ex. 4 för Mark Zuckerberg )
Mitt problem nu är att jag inte vet hur jag ska kunna inkludera innehållet som genereras av dapper-adressen. Har försökt med include, fopen/fread, funkar inte. Förmodligen för att det tar några sekunder att generera bildadressen för dapper-applikationen.
Någon som vet hur man kan gå till väga?!
sl0kMedlem sedan maj 2005523 inlägg
$id = 4;
$url = 'http://www.dapper.net/transform.php?dappName=fbookprofilepic&transformer=CSV&extraArg_fields[]=profilepic%40src&v_userid='.$id;
$bildurl = file_get_contents($url);
sl0kMedlem sedan maj 2005523 inlägg
Om du inte vill använda dig av en extern tjänst så funkar följande.
function get_FB_profile_pic_by_id($profile_id) {
$ch = curl_init();
$profile_url = 'http://www.facebook.com/profile.php?id='.$profile_id;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $profile_url);
// nödvändigt annars accepterar inte FB requesten
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
$page_content = curl_exec($ch);
if (false == $page_content) return false;
curl_close($ch);
$pattern = '#<img src="([^\s]*)".*>#';
preg_match($pattern, $page_content, $matches);
return $matches[1];
}
// ex på användning
$bild_url = get_FB_profile_pic_by_id(4);
echo "<img src='$bild_url' />";
Ett tips är dock att på något sätt cache:a resultatet(dvs bildlänken) så sparar du exekveringstid.
jahadesignMedlem sedan okt. 200621 inlägg
Se där!
Fick inte dapper-tjänsten att fungera med file_get_contents, men den senare lösningen fungerade ju alldeles perfekt. Tack!