2011-12-04 5 views
2

PHP에서 직접 OAuth 라이브러리 및 래퍼 클래스를 작성하는 데 큰 실수를 저지르고 있습니다. 트위터의 OAuth 구현에 대해서는 모든 것이 훌륭하게 작동하지만 Tumblr 및 Flickr에 대한 access_token 단계에 실패합니다.OAuth 액세스 토큰 (특정 언어가 아님) 얻기 - Flickr 및 Tumblr에 대해서는 트위터가 아니지만 동일한 문제가 발생합니다.

해당 단계의 유일한 차이점은 이제 oauth_token 및 oauth_verifier 매개 변수입니다. Authorization 헤더를 사용하고 있는데, 내가 생각할 수있는 유일한 문제는 문자 인코딩 문제가 있다는 것입니다. 그러나 확실하지 않습니다. (명확성을 위해 파손)

자료 문자열 :

이 플리커 (그들은 오류 응답, 그래서 나에게) 기대 정확히 무엇
POST& 
http%3A%2F%2Fwww.flickr.com%2Fservices%2Foauth%2Faccess_token& 
oauth_consumer_key%3Deeedfcd4c46a2c12080f58eb90a974d8 
%26oauth_nonce%3D322190b47ca680d053338724ad1cc56d35d3e7b5 
%26oauth_signature_method%3DHMAC-SHA1 
%26oauth_timestamp%3D1322981994 
%26oauth_token%3D72157628270097303-18aa378b4ab02af3 
%26oauth_verifier%3Dec7811503fdd4380 
%26oauth_version%3D1.0 

는, 서명이 문제가 있는게 틀림 없어.

인증 (또한 명확하게하기 위해 깨진) 헤더 :

Authorization: OAuth 
oauth_consumer_key="eeedfcd4c46a2c12080f58eb90a974d8", 
oauth_nonce="322190b47ca680d053338724ad1cc56d35d3e7b5", 
oauth_signature_method="HMAC-SHA1", 
oauth_timestamp="1322981994", 
oauth_token="72157628270097303-18aa378b4ab02af3", 
oauth_verifier="ec7811503fdd4380", 
oauth_version="1.0", 
oauth_signature="LYJtgHetQWNKX3rtQlSs643FdWY%3D" 

그리고 플리커 (Flickr)의 응답 :

oauth_problem=signature_invalid& 
debug_sbs=POST& 
    http%3A%2F%2Fwww.flickr.com%2Fservices%2Foauth%2Faccess_token& 
    oauth_consumer_key%3Deeedfcd4c46a2c12080f58eb90a974d8 
    %26oauth_nonce%3D322190b47ca680d053338724ad1cc56d35d3e7b5 
    %26oauth_signature_method%3DHMAC-SHA1 
    %26oauth_timestamp%3D1322981994 
    %26oauth_token%3D72157628270097303-18aa378b4ab02af3 
    %26oauth_verifier%3Dec7811503fdd4380 
    %26oauth_version%3D1.0 

더 GET 또는 POST 매개 변수가 없습니다. 모든 것은 내가 여기서 본 것에서 올바르게 벗어난 것처럼 보인다. 서명은 request_token 단계 (트위터의 경우 ANY 요청)에서 작동합니다. 내 서버 시계가 초 이내에 있는지 확인했습니다. 나는 명백한 것을 놓치고 있는가? 어떻게 진단 하시겠습니까?

+0

어떤 문제가 발생합니까? 오류입니까? –

+0

하하. 오류를 잊어 버린 것에 대한 모든 정보를 제공하는 데 중점을 두었습니다. 미안, 1 초! – landons

답변

2

나는 내 자신의 질문에 답할 것입니다.

  • 트위터

  • 따라서 access_token이 응답 할 때까지 oauth_token_secret 반환하지 않습니다 request_token 단계에에 oauth_callback를 기대합니다 :

    이 몇 가지 다른 OAuth는 서비스 제공자 구현 사이의 불일치했다 , access_token 요청에 서명 할 때 빈 oauth_token_secret가 있습니다.
  • ,210

& 플리커 텀블러

  • 가 인증에 oauth_callback에 기대 (즉) request_token 단계에 단계
  • 반환 oauth_token_secret)을 인증 (당신이 그것을 기억하는 기대)

유튜브를 요청을 access_token이 서명을 사용 (및 기타 Google의 OAuth 서비스 제공자 :

  • request_token 단계에서 Google이 독점하는 "범위"를 기대합니다.
  • oauth_callback on authenticate (예 :OAuthAuthorizeToken) 단계
  • oauth_token이 access_token 단계의 인증 헤더에 전달되는 것 (기본 문자열에서 필수 이중 인코딩으로 인해 "토큰이 유효하지 않음"으로 응답 함)처럼 보이지 않습니다. 게시물 본문이나 쿼리 문자열에 대신 전달하십시오.
+1

나는 tumblr에서 access_token을 얻는 방법에 집착하고있다. 나는 tumblr에서 oauth_token_secret & oauth_token을 얻었지만 지금은 access_token을 얻는 방법을 모른다. 여기서 oauth_token을 access_token으로 사용하면 tumblr은 인증 경고를 표시합니다. 또한이 프로세스에서 oauth_verifier를 사용하고 있는지 알려주십시오. 도와주세요. 나는 이미 같은 날에 이틀을 낭비했다. –