2012-02-25 4 views
2

나는 정확하게 API 문서의 지시를 따라하고있어, 일부 좌절 한 후에 나는 마침내 내가 몇 컴퓨터에서이 파이썬 스크립트를 시도했습니다 http://docs.amazonwebservices.com/AWSECommerceService/2011-08-01/DG/rest-signature.htmlAmazon Product Advertising API에 대해 잘못된 서명이 표시되는 이유는 무엇입니까?

에 자신의 예에서 함께 직접 뭔가를 넣고 같은 결과를 입수했습니다 그들 모두에.

import hmac 
from base64 import b64encode 
from hashlib import sha256 

secret_key = '1234567890' 

to_sign = """GET 
webservices.amazon.com 
/onca/xml 
AWSAccessKeyId=AKIAI44QH8DHBEXAMPLE&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-06""" 

print b64encode(hmac.new(secret_key, to_sign, sha256).digest()) 

지침이 요청하고,이 키를 사용하여 서명이 Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg=라고 말할하지만 아무도 아무것도 말했다 전에 나는 (O6UTkH+m4zAQUvB+WXUZJeA8bZcKAdkc4crKgHtbc6s=

을 얻을 : 예제 페이지는 65 자에 싸여 요청을 표시하며, 내가 ' . 이미 그것을 시도했습니다 이것은 솔루션을 제공하지 않으며, 서명 생성에 대한 지침에 명시되지 않음)


편집 :. 나는 대답은 아래를 참조 발견했다.

+0

: 아마존의 JS 구현 9 월 2013 작동 및 문제 해결에 유용합니다. http://associates-amazon.s3.amazonaws.com/signed-requests/helper/index.html – amwinter

답변

2

글쎄, 저것 좀 봐. 문서가 틀렸어.

내가 옛날에 발견

(거의)이 질문의 중복 : 그것은 예에서 AKIAI44QH8DHBEXAMPLE00000000000000000000에서 변경된 AWSAccessKeyId 값과 같은 Calculating a SHA hash with a string + secret key in python

페이지를 요청합니다. 스크립트에서이 업데이트하면 예상 키를 인쇄

, 다른 사람들에게 참고 Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg=

import hmac 
from base64 import b64encode 
from hashlib import sha256 

secret_key = '1234567890' 

to_sign = """GET 
webservices.amazon.com 
/onca/xml 
AWSAccessKeyId=00000000000000000000&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-06""" 

print b64encode(hmac.new(secret_key, to_sign, sha256).digest()) 
1

Bottlenose 라이브러리 https://github.com/dlo/bottlenose을 확인해보십시오. AWS 제품 API를 더 잘 처리 할 수 ​​있습니다.

+0

이봐 요, API에 대한 래퍼를 찾기 위해 모든 곳을 찾고있었습니다. 내가 서명하고 있었어. 예제 페이지에서 신비한 일관성없는 변경 사항을 발견 할 때까지 내 서명 생성이 잘못되었다고 생각했습니다. 내 진짜 문제는 내가 타임 스탬프의 끝에 "Z"를 잊었다는 것이 었습니다. – Nikker

관련 문제