2016-06-22 7 views
0

Flickr API를 사용하려고 할 때 내 머리를 부딪히는 중 ... 내 목표는 내 웹 사이트에서 내 Flickr 계정의 이미지를 업로드하고 앨범을 만들 수 있다는 것입니다. phpFlickr 라이브러리를 사용해 보았습니다. 하지만 분명히 그것은 인증 된 토큰을 얻기위한 업데이트가 필요합니다 ... 그것은 "잘못된 인증 토큰"을 계속 제공합니다. flickr API 용 PHP 라이브러리

는 좀 토큰을 얻는 방법에 읽고 DBZFlickr 사용이 & oauth_verifier을의 oauth_token 얻을 관리했지만 ... 그것은 또한 upload.php로 포함하여 내 계정에 어떤 사진을 업로드에 실패 액세스 토큰이를 교환하는 데 실패 예 ("빈"오류!). DBZ flickr.php 코드를 파기 한 후 Flickr에 업로드하려고 할 때이 오류가 발생했습니다. "oauth_problem = signature_invalid &" 그래서 유효한 서명을 생성하는 방법을 찾기 시작했습니다. 그리고 처음부터 모든 것을 만들려고한다면 여기에서해야 할 일이 상당하다는 결론을 얻었습니다.

내 질문은 : 성공적으로 앨범을 만들고 내 Flickr 계정에 사진을 업로드하는 데 사용할 수있는 업데이트 된 PHP 라이브러리가 있습니까? 아니면 제가 건물을 세우려고합니까?

답변

2

OK .. 마침내 DBZ 라이브러리로 작업하게되었습니다. I는 것을 표시하는 flickr.photosets.create auth.php의 방법을 변경하여 DBZFlickr를 사용 앨범을 만드는 .... 관리

: I했던 동일한 문제에 직면 장래 규범 사람을 위해

라이브러리가 쓰기 권한이있는 액세스 토큰을 올바르게 생성합니다.

그러나 업로드 예제에서는 계속 "유효하지 않은 서명"오류가 발생했습니다 .... 코드를 확인했습니다. Flickr.php는 요청에 서명하기 전에 사진 매개 변수를 올바르게 설정 해제 한 다음 다시 추가하고 요청을 정확하게 제출합니다. www.flickr.com/services/api/upload.api.html

토론을 찾았습니다. https://www.flickr.com/groups/[email protected]/discuss/72157650261711318/에서 오류가 실제로 서명 문제는 아니지만 전송되는 '사진'매개 변수가 문제라는 것을 분명히했습니다. Flickr가 사진 매개 변수로 무엇을해야할지 모르기 때문에 서명 오류가 발생합니다.

그래서 사진 매개 변수가 잘못 되었나요? Flickr API를 사용하려면 이미지를 바이너리 형식으로 보내야합니다 ... DBZ 라이브러리 Flickr.php 스크립트 라인 677은 php (http://au.php.net/manual/en/function.curl-setopt.php)의 cURL 함수를 사용하여 우리에게 열심히 노력합니다. 업로드 된 사진을 포함하는 $ 매개 변수를 HTTP 요청의 게시 필드에 전송합니다. http 필드는 이진 형식으로 업로드해야합니다. 그러나

, 나는 그 CURL PHP send image 상태에서 발견되는 화려한 코멘트 : "CURLOPT_SAFE_UPLOAD는 5.6.0에서 true로 디폴트 ... 그래서 당신은 curl_setopt ($ ch를, CURLOPT_SAFE_UPLOAD, 거짓)를 추가해야합니다; CURLOPT_POSTFIELDS를 설정하기 전에" http://au.php.net/manual/en/function.curl-setopt.php 는 말한다 :

수동 검사 "를 기본값으로 FALSE로 PHP 5.5.0에서 추가 PHP 5.6.0 TRUE로 기본값을 변경합니다.."

PHP 버전이 5.5.0 인 경우 라이브러리는 정상적으로 작동하지만 PHP 5.6.0 버전을 사용하는 경우 Flickr.php에서 677 전에 행을 추가해야 CURLOPT_SAFE_UPLOAD를 false로 변경할 수 있습니다 (라이브러리 일부와 다른 사람들과 함께 작동하지 않음).

문제를 해결하려면 ...이 줄을 Flickr.php의 줄 677 앞에 추가하십시오. curl_setopt ($ curl, CURLOPT_SAFE_UPLOAD, false);

그게 전부입니다. (- :

+0

아, 왜 내가 8 시간 전에 찾지 못했을까요? 고마워요. –