我需要简单的python oAuth示例

时间:2012-06-18 14:49:50

标签: python oauth

我是python和oAuth世界的新手。 我想用消费者密钥和秘密连接到我的服务器,我找到的所有示例都是服务器具有access_token,authorize,request_token_ready等api,但我的服务器为我执行oAuth身份验证。 所以我的问题是如何使用oAuth(我的服务器使用oAuth 1.0)将python连接到我的服务器

阐述: 我的服务器不请求令牌和访问令牌。他只使用钥匙和秘密。 如何在python中实现与此服务器的oAuth连接

3 个答案:

答案 0 :(得分:17)

这是使用requests_oauthlib

的工作示例
from requests_oauthlib import OAuth1Session
test = OAuth1Session('consumer_key',
                    client_secret='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
url = 'https://one-legged-ouath.example.com/username/test'
r = test.get(url)
print r.content

我知道这是一个老问题,但接受的答案确实没有解决他的问题,因为正如OP所说,没有一个例子只涉及使用密钥和秘密,没有令牌。

听起来好像你正在使用我所理解的被称为OAuth 1.0a(One Leg),尽管有些人将其称为OAuth 1.0a两条腿。

我在这里发现了一个不错的写作:

http://oauthbible.com/

我还没有对此进行过测试,但这里似乎有一个很好的例子:

https://github.com/CarmaSys/CarmaLinkAPI/wiki/Authentication-&-Permissions

这里有另一个很好的例子:

https://stackoverflow.com/a/12710408/2599534

答案 1 :(得分:3)

如果您正在寻找可以与您的服务器连接的客户端,我可以推荐rauth。有许多examples证明了OAuth 1.0 / a和2.0。

答案 2 :(得分:0)

正如罗马人已经说过的,这是一个古老的问题,但是仍然有一些受OAuth 1.0a(一条腿)保护的API,今天我花了几个小时来找到访问这种API的可行解决方案

我希望,该解决方案可能会方便下一个面对类似任务的人。

我的解决方案基于罗马的答案。非常感谢@roman !!

我要访问的API的默认响应是XML,因此我需要一种设置请求标头的方法。如果您知道怎么做,实际上很简单。

from requests_oauthlib import OAuth1Session

CONSUMER_KEY = ""
CONSUMER_SECRET = ""

host = "rest.host.de"
uri = "/restapi/api/search/v1.0/statistic?geocode=1276001039"

oauthRequest = OAuth1Session(CONSUMER_KEY,
                    client_secret=CONSUMER_SECRET)

url = 'https://' + host + uri

headers = {
        'Accept': "application/json",
        'Accept-Encoding': "gzip, deflate",
    }

response = oauthRequest.get(url, headers=headers)

print(response.status_code)
print(response.content)