我在编码
时遇到问题import hashlib
import hmac
base_string = "&https%3A%2F%2Fsecure.trademe.co.nz%2FOauth%2FRequestToken&oauth_callback%3Dhttp%253A%252F%252Fwww.website-tm-access.co.nz%252Ftrademe-callback%26oauth_consumer_key%3DC74CD73FDBE37D29BDD21BAB54BC70E422%26oauth_nonce%3D7O3kEe%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1285532322%26oauth_version%3D1.0%26scope%3DMyTradeMeRead%252CMyTradeMeWrite".encode()
KEY = b"3B61C8A3FF9F1F6C0DBE436F9B507E08EF&"
result = hmac.new(KEY, base_string, hashlib.sha256).hexdigest()
print(result)
OUTPUT:
2d60b698a7d5fb318068b13c8f1bdfb99d241e0d2b4a669c337f84aa694f82dc
我试图遵循这个:
这是我们的最终基本字符串:
POST&https%3A%2F%2Fsecure.trademe.co.nz%2FOauth%2FRequestToken&oauth_callback%3Dhttp%253A%252F%252Fwww.website-tm-access.co.nz%252Ftrademe-callback%26oauth_consumer_key%3DC74CD73FDBE37D29BDD21BAB54BC70E422%26oauth_nonce%3D7O3kEe%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1285532322%26oauth_version%3D1.0%26scope%3DMyTradeMeRead%252CMyTradeMeWrite
要生成签名,我们需要使用HMAC-SHA1来加密 我们的消费者秘密和访问令牌秘密的基本字符串。像我们一样 目前还没有访问令牌,我们只需使用 消费者秘密后跟一个&符号(这是关键)。
3B61C8A3FF9F1F6C0DBE436F9B507E08EF&
基本字符串和密钥都应该使用转换为二进制 UTF8编码。在生成结果MAC之后,它应该是 使用标准base-64编码转换回文本格式。在 这个例子,我们得到以下字符串,它成为我们的签名 对于这个请求。
5s3+el078a5AXGi43FBDyfg5yWY=
答案 0 :(得分:0)
Python代码和示例代码都是正确的,它们被赋予不同的输入字符串,使用不同的SHA函数并生成不同的输出数据编码。
base_string
缺少前四个字符:" POST"。你需要小心使一切都匹配。