2012-03-26 3 views
1

Ich versuche, das Benutzerbild über graph api abzurufen und cUrl zum Speichern auf dem Datenträger zu verwenden, kann aber nicht erfolgreich sein und diesen Fehler beim Überprüfen des Pantomime erhalten Art des Bildes, das ich gerettet:Das Display-Bild des Benutzers kann nicht abgerufen und gespeichert werden. CURL

Notice: exif_imagetype(): Read error! in

//$userPpicture = $user_profile[picture]; 
//Create image instances 
     $url = "http://graph.facebook.com/{$userId}/picture?type=large"; 
     $dpImage = 'temp/' . $userId . '_dpImage_' . rand().'.jpg'; 
     echo $dpImage; 

     function get_data($url) { 
      $ch = curl_init(); 
      $timeout = 5; 
      curl_setopt($ch, CURLOPT_URL, $url); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
      curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
      $data = curl_exec($ch); 
      curl_close($ch); 
      return $data; 
     } 

     $returned_content = get_data($url); 
     file_put_contents($dpImage, $returned_content); 
     echo "Type: " . exif_imagetype($dpImage); 

für diesen aktualisierten Code mit curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); ich diese Störung erhalte:

Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /var/fog/apps/app12345/myapp.phpfogapp.com/start.php on line 178

Wenn diese Aktion eine serverseitige Konfiguration erfordert, kann ich dies möglicherweise nicht durchführen, da ich einen freigegebenen Cloudspeicher über phpfog verwende.

Bitte helfen Sie mir damit.

Vielen Dank.

+0

Sind Sie sicher, dass der App die Erlaubnis erteilt wurde, auf das Bild zuzugreifen? – Reinard

+0

ja ive alle erforderlichen Berechtigungen. – Maven

+0

@Sir - Bilder über/id/picture sind öffentlich zugänglich - Maven - schau dir das Bild im temporären Verzeichnis an - prüfe, ob du das bekommst, was du erwartest - probier auch datei_get_contents (funktioniert mit URLs) – scibuff

Antwort

2

Die von Ihnen verwendete Grafik-URL http://graph.facebook.com/4/picture?type=large gibt eine HTTP 302-Umleitung zurück, nicht das tatsächliche Benutzerbild. Sie müssten die Umleitung folgen und das Bild zu dieser URL herunterladen, die eine URL ist, die wie folgt aussieht: http://profile.ak.fbcdn.net/hprofile-ak-snc4/49942_4_1525300_n.jpg

+0

Vielen Dank für die Antwort, ich folgte Ihrem Vorschlag, indem ich cURL erlaubte, der Aktion zu folgen (siehe meinen aktualisierten Code), aber jetzt bekomme ich diese neue Warnung. bitte hilfe. – Maven

1

Wie OffBySome weist darauf hin, können Sie die 302-Umleitung durch graph.facebook.com ins Finale serviert folgen müssen Ziel, das die eigentlichen Bilddaten enthält.

Der einfachste Weg, dies in diesem Fall zu tun ist, einen weiteren Aufruf curl_setopt mit CURLOPT_FOLLOWLOCATION als wahr hinzuzufügen. das heißt

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true)

Check out http://us3.php.net/manual/en/function.curl-setopt.php für weitere Details.

+0

Danke für die Antwort, tat das, aber jetzt bekomme ich diese neue Warnung. (siehe meinen aktualisierten Code), bitte helfen. – Maven

Verwandte Themen