繁体   English   中英

使用 requests-oauthlib 设置 HTTP User-Agent 标头

[英]Setting HTTP User-Agent header with requests-oauthlib

我正在使用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构造函数。 从相关文件中的文档块:

"""
    :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)方法似乎负责准备请求。 由于不相关的标头不会影响创建请求签名的基本字符串,因此添加新标头/更改现有 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM