如何在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
相关产品推荐
相关产品推荐

