OAuth 1.0 - 如何在 headers 中传递令牌?
有一个网站需要用到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 集成层,你也可以了解一下。