2014-04-15 3 views
0

Google Contacts API에 대한 연결을 관리하는 클래스를 만들었습니다. 연락처를 인증하고 반환합니다.Gmail 연락처 받기 Curl을 사용하여 사진

연락처 목록을 성공적으로 받았지만 아직 연락처 사진을 관리하지 못했습니다. 이건 내 HTML 코드입니다 :

<img src="<?= $service->getPhoto($contact['image']) ?>" /> 

이 내 PHP입니다 :는 $ URL 인수는 구글의 API에 의해 반환 된 연락처 데이터가 제공하는 URL이 있음을

public function getPhoto($url = false){ 

     if(!$url) 
      return false; 

     $url = urlencode($url.'&access_token='.$this->_access_token); 
     //echo $url.'&access_token='.$this->_access_token; 
     $curl = curl_init($url); 

     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($curl, CURLOPT_TIMEOUT, 15); 

     $image = curl_exec($curl); 
     curl_close($curl); 

     return $image; 

    } 

참고,이 같은처럼 다음

https://www.google.com/m8/feeds/photos/media/{userEmail}/{contactID} 

이는 URL의 exemple입니다 (내 프로젝트에 따라) :

https://www.google.com/m8/feeds/photos/media/example%40gmail.com/ABCDEFGHIJK2345 

는 때때로 contactId를 구글에서 '/'

오류 메시지가 포함되어

401. That's an error. 

There was an error in your request. That's all we know. 

내가 뭔가를 놓친 건가?

참고 : urlencode, urldecode를 사용해 보았습니다. 사용하지 않고 시도했지만 ... 같은 문제가 있습니다. 또한 내가 테스트중인 연락처에는 gmail 사진이 있습니다.

답변

1

전체 URL을 인코딩하고 있습니다. 아마도 엉망을 일으키는 것입니까?

$url = $url . '&access_token=' . urlencode($this->_access_token); 
+0

감사합니다. +1하지만 토큰 만 urlencode해도 동일한 오류가 발생합니다. 또한 응답의 모든 이미지에 gd : etag가 반환되지 않는다고 언급했습니다. 연락처에 사진이 있어도. – SmootQ

+1

'curl_setopt ($ curl, CURLOPT_VERBOSE, true);'로 코드를 실행하고 질문을 log msg로 업데이트하십시오. –

+0

Sabuj Hassa, 난 그냥 문제를 해결했습니다, 나는 분리 된 대답, Oof 솔루션을 게시 할 것입니다! 나는 오늘 아침부터 고투하고있다 :) – SmootQ

0

나는 마침내 문제를 해결했습니다, 이것은 내가 무슨 짓을 : '?'

내가 '&'로 변경 는 $ URL에

$url.'&access_token='.$this->_access_token 

로 변경 :이하고 그것을 넣어 access_token은 이후

$url.'?access_token='.$this->_access_token 

는 첫 번째 매개 변수 ... 그리고 나는 컬을 제거, 난 그냥 $ URL을 반환 이미지 src.

어떻게 든 해결되었지만 이미지의 src에 access_token을 두는 것이 좋을지는 모르겠다. (클라이언트 측 사용자가 볼 수 있음).