gpt4 book ai didi

python - 使用带有用户名和密码的 OAuth2

转载 作者:太空狗 更新时间:2023-10-29 21:59:26 28 4
gpt4 key购买 nike

作为测试版的一部分,我获得了对特定服务的 REST API 访问权限。有人告诉我授权是通过 OAuth2 进行的。

我得到了以下信息:

  1. 身份证
  2. secret
  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 {}

我正在尝试使用 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)

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

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

我还尝试创建一个没有 token 的 oauth2.Client 对象,并检查第一个响应是否有 access_token,但没有任何结果。

此处进行身份验证的正确方法是什么?

最佳答案

据我所知,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)

关于python - 使用带有用户名和密码的 OAuth2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35801615/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com