Ami*_*hum 7 ruby python authentication oauth2
作为测试版的一部分,我已获得REST API访问特定服务.我被告知授权是通过OAuth2进行的.
我得到以下内容:
我还在Ruby中获得了一个代码示例:
client = OAuth2::Client.new(key, secret, :site => site)
token = client.password.get_token('your_email@mail.com', 'your_password')
access_token = OAuth2::AccessToken.new(client, token)
JSON.parse access_token.get("/v1/users/me").body rescue {}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用oauth2包在python中实现这个相同的代码片段,但没有成功:
consumer = oauth2.Consumer(key=self._client_id,
secret=self._client_secret)
request_token_url = "api.theservice.com/"
token = oauth2.Token(key=self._email, secret=self._password)
client = oauth2.Client(consumer, token)
resp, content = client.request(request_token_url, "GET")
pprint.pprint(resp)
pprint.pprint(content)
resp, content = client.request(request_token_url + 'v1/users/me', "GET")
pprint.pprint(resp)
pprint.pprint(content)
Run Code Online (Sandbox Code Playgroud)
第二个响应包含以下内容:
'www-authenticate': 'Bearer realm="Doorkeeper", error="invalid_token", '
'error_description="The access token is invalid"',
Run Code Online (Sandbox Code Playgroud)
我也尝试创建一个oauth2.Client没有令牌的对象,并检查了第一个响应access_token,但没有任何类型的通过.
在这里进行身份验证的正确方法是什么?
小智 0
据我所知,oauth2 和 requests-oauth2 都不支持用户名/密码策略。所以你需要自己获取access token。
检查你的 API 文档以获取详细信息,但一般来说应该是这样的:
r = requests.post('http://api.theservice.com/auth',
data = {'email':email, 'password': password}).json()
token = oauth2.Token(key=r['key'], secret=r['secret'])
consumer = oauth2.Consumer(key=self._client_id,
secret=self._client_secret)
client = oauth2.Client(consumer, token)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |