2011-08-30 2 views
0

oauth2 라이브러리를 사용하여 드롭 상자 계정 정보에 액세스하려고합니다. 나는 dropbox에서 액세스 토큰을 가지고있다. 그리고 내가 뭐하는 거지 것은 :장고에있는 파이썬의 oauth2 라이브러리를 사용하여 드롭 박스에 액세스

지금
parameters = { 
    'oauth_consumer_key' : DropboxConstants.app_key, #my app key 
    'oauth_token'   : access_token_g,#token that i got [<key>,<secret>] 
    'oauth_signature_method': oauth.SignatureMethod_HMAC_SHA1.name, 
    'oauth_timestamp'  : oauth.generate_timestamp(), 
    'oauth_nonce'   : oauth.generate_nonce(), 
    'oauth_version'   : DropboxConstants.api_version, 
    'oauth_signature'  : '' 
} 

#prepare signature 
oauth_request=   oauth.Request(method="GET",url=DropboxConstants.account_info_url,parameters=parameters) 
signature_method_m = oauth.SignatureMethod_HMAC_SHA1() 
signature   = signature_method_m.signing_base(consumer=consumer,request=oauth_request,token=access_token_g) 

parameters['oauth_signature'] = signature[1] 

#prepare url for accessing account info 
url = "%s?oauth_token=%s&oauth_consumer_key=%s&oauth_signature_method=%s&oauth_timestamp=%s&oauth_nonce=%s&oauth_version=%s&oauth_signature=%s"%\ 
     (DropboxConstants.account_info_url,access_token['oauth_token'],parameters['oauth_consumer_key'],parameters['oauth_signature_method'],parameters['oauth_timestamp'],parameters['oauth_nonce'],parameters['oauth_version'], parameters['oauth_signature']) 

return HttpResponseRedirect(url) 

생성지고 서명 : GET & HTTPS % 3A % 2F % 2Fapi.dropbox.com % 2F0 % 2Faccount % 2Finfo & oauth_consumer_key % 3Dedw6k7d78hu8q8v % 26oauth_nonce % 3D39519001 % 26oauth_signature_method % 3DHMAC-SHA1 % 26oauth_timestamp % 3D1314679561 % 26oauth_token % 3Doauth_token_secret % 253Dun58fgoc14n9jlv % 2526oauth_token % 253D2ew2dafg0r40uwq % 26oauth_version % 3D1.0

내가 얻을 오류는 다음과 같습니다 { "오류". "잘못된 서명 예상 문자열 기반 서명 : GET & https % 3A % 2F % 2Fapi.dropbox.com % 2F0 % 2Faccount % 2Finf 오 & HTTPS % 253A % 252F % 252Fapi.dropbox.com % 252F0 % 252Faccount % 252Finfo % 3D % 26oauth_consumer_key % 3Dedw6k7d78hu8q8v % 26oauth_consumer_key % 253Dedw6k7d78hu8q8v % 2526oauth_nonce % 253D39519001 % 2526oauth_signature_method % 253DHMAC-SHA1 % 2526oauth_timestamp % 253D1314679561 % 2526oauth_token % 253Doauth_token_secret % 25253Dun58fgoc14n9jlv % 252526oauth_token % 25253D2ew2dafg0r40uwq % 2526oauth_version % 253D1.0 % 3D % 26oauth_nonce % 3D39519001 % 26oauth_signature_method % 3DHMAC-SHA1 % 26oauth_timestamp % 3D1314679561 % 26oauth_token % 3D2ew2dafg0r40uwq % 26oauth_version % 3D1.0 "}

답변

0
먼저 정확하게 문자를 탈출를 urlencode를 사용하십시오

:

from urllib import urlencode 
... 
parameters['oauth_token'] = access_token_g['oauth_token'] 
url = "?".join(DropboxConstants.account_info_url, urlencode(parameters)) 

만약 이것이 도움이된다면, igniature 기본

+0

{ "오류": "잘못된 서명. 예상 문자열 기반 서명 : GET 및 HTTPS % 3A % 2F % 2Fapi.dropbox.com % 2F0 % 2Faccount % 2Finfo & oauth_consumer_key % 3Dedw6k7d78hu8q8v % 26oauth_nonce % 3D85657197 % 26oauth_signature_method % 3DHMAC-SHA1 % 26oauth_timestamp % 3D1314726395 % 26oauth_token % 3Dokd2gvlvoiva9ro % 26oauth_version % 3D1.0 "} 서명 가 253D1를 얻는 % 26https % 253A % 252F % 252Fapi.dropbox.com % 252F0 % 252Faccount % 252Finfo % 26oauth_consumer_key % 253Dedw6k7d78hu8q8v % 2526oauth_nonce % 253D85657197 % 2526oauth_signature_method % 253DHMAC-SHA1 % 2526oauth_timestamp % 253D1314726395 % 2526oauth_token 253Dokd2gvlvoiva9ro % % % 생성 2526oauth_version .0 – amd

0

사실 난 같은 코드에 약간의 변화와 함께이 문제를 해결 한 :

access_token_g = 
oauth.Token(key=access_token['oauth_token'],secret=access_token['oauth_token_secret']) 
#prepare signature 
oauth_request  = oauth.Request(method="GET",url=account_info_url,parameters=parameters) 
signature_method_m = oauth.SignatureMethod_HMAC_SHA1() 

oauth_request.sign_request(signature_method=signature_method_m,consumer=consumer,token=access_token_g) 

resp, content = client.request(oauth_request.to_url()) 

그것은 나에게 올바른 컨텐츠를 제공합니다 ..

관련 문제