You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的Authlib中使用HMAC-SHA256签名请求?

问题:Authlib客户端使用HMAC-SHA256签名请求报错

使用Authlib的OAuth1Auth发起请求时,指定signature_method="HMAC-SHA256"抛出ValueError: Invalid signature method.错误,代码如下:

auth = OAuth1Auth(
    client_id="...",
    client_secret="...",
    token="...",
    token_secret="...",
    realm="...",
    signature_method= "HMAC-SHA256",
)
r = requests.post(url, auth=auth, data=payload)

官方文档仅提及服务端处理该签名方法,未说明客户端实现方式,咨询是否支持及解决办法。

解决办法

Authlib的OAuth1客户端支持HMAC-SHA256签名方法,报错通常是版本兼容性或参数传递方式导致的,可按以下步骤解决:

  • 升级Authlib到最新版本
    旧版本的Authlib可能未内置HMAC-SHA256的支持,执行升级命令:

    pip install --upgrade authlib
    
  • 直接传入签名方法类替代字符串
    若升级后仍报错,可直接导入并使用HMACSha256Signature类,避免字符串识别问题:

    from authlib.oauth1.rfc5849.signature import HMACSha256Signature
    from authlib.integrations.requests_client import OAuth1Auth
    import requests
    
    auth = OAuth1Auth(
        client_id="...",
        client_secret="...",
        token="...",
        token_secret="...",
        realm="...",
        signature_method=HMACSha256Signature(),
    )
    r = requests.post(url, auth=auth, data=payload)
    
  • 确认服务端兼容性
    确保对接的OAuth1服务端确实支持HMAC-SHA256签名方法,部分服务端可能仅默认支持HMAC-SHA1。

内容的提问来源于stack exchange,提问作者avyfain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:00:05