我正在使用requests-oauthlib库从OAuth(v1)提供程序获取请求令牌。
oauth = OAuth1Session(CONSUMER_KEY, client_secret=CONSUMER_SECRET,
signature_method=SIGNATURE_HMAC,
signature_type=SIGNATURE_TYPE_AUTH_HEADER)
resp = oauth.fetch_request_token(url=REQUEST_TOKEN_URL)
我想发送带有请求令牌获取请求的自定义
User-Agent
标头,并包括一些联系信息,以防我的脚本出现任何问题。能做到吗? 最佳答案
可以将客户端类传递给OAuth1Session
构造函数。在相关文件的docblock中:
"""
:param client_class: A subclass of `oauthlib.oauth1.Client` to use with
`requests_oauthlib.OAuth1` instead of the default
"""
在oauthlib.oauth1.Client类中,
_render(self, request, formencode=False, realm=None)
方法似乎负责准备请求。由于不相关的标头don't impact是创建请求签名的基础字符串,因此添加新标头/更改现有的User-Agent标头不应导致签名发生任何变化。这样,我们可以创建一个自定义客户端类,重写
_render
方法,并在添加标头后在父类中调用实现:class CustomClient(Client):
def _render(self, request, formencode=False, realm=None):
request.headers['User-Agent'] = "FooClient/1.0"
return super()._render(request, formencode, realm)
实例化
OAuth1Session
的代码然后只需引用上面的类:oauth = OAuth1Session(CONSUMER_KEY, client_secret=CONSUMER_SECRET,
signature_method=SIGNATURE_HMAC,
signature_type=SIGNATURE_TYPE_AUTH_HEADER, client_class=CustomClient)
关于python - 使用requests-oauthlib设置HTTP User-Agent header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33426717/