E * Trade API允许您使用RESTful登录到该网站并操作帐户或检索报价信息。虽然我无法生成符合他们的“实践问题”位于朝 https://us.etrade.com/ctnt/dev-portal/getContent?contentId=306a9d46-58c2-4cac-85f6-7717aea056bd使用Python为ETrade API生成oauth_signature
简单HMAC-SMA1算法已被编码下方的底部,并再现从这里https://oauth.net/core/1.0a/#sig_base_example的OAuth的核心1.0a的签名值的oauth_signature。虽然我无法获得E * Trade签名值来重现。
def generate_oauth_signature():
from urllib.parse import quote_plus
from hashlib import sha1
import binascii
import hmac
key = quote_plus('7d30246211192cda43ede3abd9b393b9') + \
'&' + \
quote_plus('XCF9RzyQr4UEPloA+WlC06BnTfYC1P0Fwr3GUw/B0Es=')
key = key.encode()
raw = quote_plus('GET') + '&' + \
quote_plus('https://etws.etrade.com/accounts/rest/accountlist') + '&' + \
quote_plus('oauth_consumer_key=c5bb4dcb7bd6826c7c4340df3f791188&oauth_nonce=0bba225a40d1bbac2430aa0c6163ce44&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1344885636&oauth_token=VbiNYl63EejjlKdQM6FeENzcnrLACrZ2JYD6NQROfVI=')
raw = raw.encode()
hashed = hmac.new(key, raw, sha1)
sig = hashed.digest()
oauth_signature = quote_plus(binascii.b2a_base64(hashed.digest())[:-1])
的功能应该得到 “%2FXiv96DzZabnUG2bzPZIH2RARHM%3D”,但我还没有。有没有人为E * Trade API制定了哈希算法?
我知道etradepy.py,这是一个很好的包,但有点过时,并且与当前的E * Trade网站不匹配。
我在.NET中,所以我只能帮概念,不specfic代码。 – BWhite
查看该页面上的示例获取请求。签名进入获取请求。你有相反的方向。 – BWhite
签名方法需要两个参数,文本和一个键。关键是“消费者秘密和令牌秘密,由'&'分隔”。所以它看起来像你有那个部分是正确的。我没有在任何一页上看到有关要签署文本的细节。很确定它不应该包含URL。玩编码不同的作品。 – BWhite