OAuth 1.0 - 如何在 headers 中传递令牌?

1 投票
1 回答
2318 浏览
提问于 2025-04-18 15:10

有一个网站需要用到OAuth 1.0,并且要求使用一个令牌。我试了以下代码:

def request(path=None):
    token = access_token()
    headers = { 'Authorization' : 'oauth_token %s' %  token }
    res = requests.get('https://somewebsite.com/v1'+path, headers=headers)
    print res.text

或者把oauth_token换成access_token或者TOK:。但是这些都不管用,返回的错误是Access_token is empty。不同的网站的认证方法真的是不一样吗?

1 个回答

1

正确的头部格式是:

Authorization: OAuth param1_name="param1 value", param2_name="param2 value"

也就是说,OAuth 后面跟着用逗号分隔的名称-值对。

其中,oauth_token 是一个参数名称:

headers = {'Authorization': 'OAuth oauth_token="%s"' %  token}

不过,根据 访问受保护的资源 的说明,你需要发送的不仅仅是令牌,还需要更多的参数。

如果你打算自己尝试实现这个功能,至少可以看看 OAuth 的规范文档Python 的 oauthlib 库源代码。还有一个 Requests-OAuthlib 集成层,你也可以了解一下。

撰写回答