想知道如何对我的参数进行url编码,这是对的吗?
params = {'oauth_version': "1.0",
'oauth_nonce': oauth.generate_nonce(),
'oauth_timestamp': int(time.time()),
'oauth_consumer_key': CONSUMER_KEY,
'oauth_token': access_key,
'oauth_nonce' : nonce,
'oauth_consumer_key': consumer.key,
'oauth_signature': 'el078a5AXGi43FBDyfg5yWY',
}
遵循本指南:
要制作Authorization标头,只需附加所有值即可 以“OAuth”开头。每个值都必须进行URL编码。
> 1. Authorization: OAuth oauth_callback="http%3A%2F%2Fwww.website-tm-access.co.nz%2Ftrademe-callback", > oauth_consumer_key="C74CD73FDBE37D29BDD21BAB54BC70E422", > oauth_version="1.0", oauth_timestamp="1285532322", > oauth_nonce="7O3kEe", oauth_signature_method="HMAC-SHA1", > oauth_signature="5s3%2Bel078a5AXGi43FBDyfg5yWY%3D"
答案 0 :(得分:0)
您应该在python 3中使用urllib.quote_plus或urllib.parse.quote_plus,它可以很好地为您处理。
您希望从params构建授权标头的方式如下:
(python3版)
import urllib
authorization = 'OAuth ' + ', '.join([key + '="' + urllib.parse.quote_plus(str(value)) + '"' for key, value in params.items()])
http_headers = {'Authorization': authorization}
(python2版本)
import urllib
authorization = 'OAuth ' + ', '.join([key + '="' + urllib.quote_plus(str(value)) + '"' for key, value in params.items()])
http_headers = {'Authorization': authorization}
但是,您可能希望查看现有的实现,例如requests-oauth1。请参阅here。