使用带用户名和密码的OAuth2

2024-04-24 23:36:15 发布

您现在位置:Python中文网/ 问答频道 /正文

作为beta版的一部分,我已经获得了对某个服务的restapi访问权。我被告知授权是通过OAuth2。在

我得到了以下信息:

  1. 身份证
  2. 秘密
  3. 现场

我还得到了一个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 {} 

我试图用python中的oauth2包实现相同的代码片段,但没有成功:

^{pr2}$

第二个响应包含以下内容:

'www-authenticate': 'Bearer realm="Doorkeeper", error="invalid_token", '
                    'error_description="The access token is invalid"',

我还尝试创建一个没有标记的oauth2.Client对象,并检查了access_token的第一个响应,但是没有任何类似的结果。在

这里正确的认证方式是什么?在


Tags: 代码clienttokennewyourgetaccesssite
1条回答
网友
1楼 · 发布于 2024-04-24 23:36:15

据我所见,oauth2和requests-oauth2都不支持用户名/密码策略。所以您需要自己获取访问令牌。在

查看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)

相关问题 更多 >