2011-08-26 6 views
2

PHP 내에서 이미지 이미지로 사용자 이미지가 필요합니다.
확실한 선택은 다음을 수행하는 것입니다 :curl을 통해 PHP에서 사용자 프로필 이미지 가져 오기가 작동하지 않습니다.

$url = 'https://graph.facebook.com/'.$fb_id.'/picture?type=large'; 
$img = imagecreatefromjpeg($url); 

이 내 테스트 서버에서 작동하지만 서버에서이 스크립트 (allow_url_fopen을이 꺼져) 결국 실행하도록되어 없습니다.

그래서 나는 컬을 통해 이미지를 얻기 위해 노력 :

function LoadJpeg($url) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
    $fileContents = curl_exec($ch); 
    curl_close($ch); 
    $img = imagecreatefromstring($fileContents); 

    return $img; 
} 

$url = 'https://graph.facebook.com/'.$fb_id.'/picture?type=large'; 
$img = LoadJpeg($url); 

이 그러나 페이스 북의 프로필 사진와 을 작동하지 않습니다.
예를 들어, google.com의 goog 로고를 사용하여 말풍선을 사용하면 완벽하게 작동합니다.

누군가가 나에게 이유를 말해 주거나 내가하려는 일을 성취하는 방법을 말해 줄 수 있습니까?

답변

1
  1. 가장 쉬운 솔루션 : allow_url_fopen
  2. 페이스 북은 대부분 사용자 에이전트와 일치를 켭니다.

스푸핑 좋아 ...

// spoofing Chrome 
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, wie z. B. Gecko) Chrome/13.0.782.215 Safari/525.13."; 

$ch = curl_init(); 

// set user agent 
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
// set the rest of your cURL options here 

나는이 바로 자신의 TOS 위반 및 법적 문제를 야기 할 수있는 언급해야하지? 또한 자신의 robots.txt을 따라야합니다!

+0

답변 해 주셔서 감사합니다.하지만 사용자 에이전트를 설정해도 그 트릭을 수행 할 수는 없습니다.TOS 관련 : 나는 그것을 사용하는 사용자에 대한 사용자 프로필 이미지가있는 앱을 작성 중입니다. 나는 정말로 여기에서 문제를 보지 못한다 - 또는 나는 무엇인가 놓치고 있냐? –

+0

또한 사용자 에이전트 외에 다른 헤더 필드를 설정하여 일반 브라우저 호출을 시뮬레이트하려했지만 운이 없었습니다. 정말 나를 괴롭히는 것은 imagecreatefromjpeg가 이러한 문제에 부딪치지 않는다는 것입니다. 그냥 이미지를 가져옵니다. –

3

당신은

curl_setopt ($ ch를, CURLOPT_FOLLOWLOCATION, true)를 설정해야합니다;

이미지가 없으면 응답 헤더의 "url"필드에 설정된 다른 위치에 있기 때문에 이미지없이 302 응답 코드가 표시됩니다.

관련 문제