跳转到主要内容

Requests的OAuthlib认证支持。

项目描述

本项目为Requests库提供了一流的OAuth库支持。

OAuth 1工作流程

OAuth 1可能看起来过于复杂,并且确实有一些怪癖。幸运的是,requests_oauthlib隐藏了这些怪癖的大部分,让您能专注于手头的任务。

使用requests_oauthlib访问受保护资源就像

>>> from requests_oauthlib import OAuth1Session
>>> twitter = OAuth1Session('client_key',
                            client_secret='client_secret',
                            resource_owner_key='resource_owner_key',
                            resource_owner_secret='resource_owner_secret')
>>> url = 'https://api.twitter.com/1/account/settings.json'
>>> r = twitter.get(url)

在访问资源之前,您需要从您的提供商(例如Twitter)处获取一些凭证,并获得您想要为其检索资源的用户的授权。您可以在RTD上的完整OAuth 1工作流程指南中了解所有这些信息。

OAuth 2工作流程

OAuth 2通常比OAuth 1更简单,但具有更多口味。最常见的是授权码授予,也称为WebApplication流程。

在获得访问令牌后获取受保护的资源可能非常简单。然而,在访问资源之前,您需要从您的提供商(例如Google)处获取一些凭证,并获得您想要为其检索资源的用户的授权。您可以在RTD上的完整OAuth 2工作流程指南中了解所有这些信息。

安装

要安装requests和requests_oauthlib,您可以使用pip

pip install requests requests-oauthlib

历史记录

v2.0.0(2024年3月22日)

完整的更改列表在[github](https://github.com/requests/requests-oauthlib/milestone/4?closed=1)中。

新增内容与更改

  • OAuth2Session现在如果fetch_tokenrefresh_token中没有覆盖verify,将正确使用self.verify的值。修复了#404

  • OAuth2Session构造函数现在在提供client时使用其client.scope,并且没有覆盖scope。修复了#408

  • 添加refresh_token_requestaccess_token_request合规性钩子

  • 添加PKCE支持和Auth0示例

  • 添加对Python 3.8-3.12的支持

  • 移除对Python 2.x、<3.7的支持

  • 迁移到Github Action

  • 更新依赖关系

  • 清理一些文档和示例

v1.4.0(2024年2月27日)

  • 版本2.0.0最初以1.4.0发布,最终被撤回。

v1.3.1(2022年1月21日)

  • 添加对OAuth相互TLS(draft-ietf-oauth-mtls)的初始支持

  • 删除过时的LinkedIn合规性修复

  • 添加eBay合规性修复

  • 添加Spotify OAuth 2教程

  • 添加对python 3.8、3.9的支持

  • 修复LinkedIn合规性修复

  • 修复ReadTheDocs文档和sphinx错误

  • 将流水线移至GitHub Actions

v1.3.0(2019年11月6日)

  • Instagram合规性修复

  • 向OAuth2Session上的fetch_token()方法添加force_querystring参数

v1.2.0(2019年1月14日)

  • 此项目现在依赖于OAuthlib 3.0.0及以上版本。它不支持OAuthlib 3.0.0之前的版本。

  • 更新OAuth2测试以使用OAuth2Session实例的‘sess’代替‘auth’,因为OAuth2Session对象和方法接受一个‘auth’参数,通常是一个requests.auth.HTTPBasicAuth实例

  • OAuth2Session.fetch_token以前试图错误地猜测如何以及在哪里提供“客户端”和“用户”凭证。这与一些OAuth服务器不兼容,并且与oauthlib的破坏性更改不兼容,这些更改旨在正确提供“client_id”。较旧的实施方式在Legacy客户端上没有用户名和密码时也没有引发正确的异常。

  • 避免为OAuth2Session自动进行netrc身份验证。

v1.1.0(2019年1月9日)

  • 调整了对oauthlib依赖项的版本指定器:此项目尚未与oauthlib 3.0.0兼容。

  • 删除对nose的依赖。

  • 对代码进行一些小修改,以使其更易于阅读/维护。

v1.0.0(2018年6月4日)

  • 已移除对Python 2.6和Python 3.3的支持。 此项目现在支持Python 2.7以及Python 3.4及以上版本。

  • 在文档中添加了几个示例。

  • 添加了plentymarkets合规性修复。

  • 向OAuth1Session添加了token属性,以匹配OAuth2Session上的相应token属性。

v0.8.0(2017年2月14日)

  • 添加了Fitbit合规性修复。

  • 修复了在访问令牌请求的响应体中存在换行符时,尝试提取令牌会引发错误的问题。

  • 修复了v0.7.0中引入的问题,其中用户在传递auth到多个方法时会遇到与由client_idclient_secret派生的身份验证的冲突。现在优先使用用户提供的auth参数。

v0.7.0(2016年9月22日)

  • 允许OAuth2Session.request接受用于自动刷新令牌目的的client_idclient_secret参数,这可能是必需的。

v0.6.2(2016年7月12日)

  • 如果提供,则使用client_idclient_secret作为授权头。

  • 通过设置auth=False显式跳过授权头。

  • 在刷新令牌时传递proxies关键字参数。

  • 其他清理工作。

v0.6.1(2016年2月19日)

  • 修复了在没有用户名和密码时发送授权头时出现的错误。

  • 在获取新的令牌之前确保清除会话令牌。

  • 对Slack合规性修复进行了一些改进。

  • 避免令牌刷新周围的时序问题。

  • 在调用fetch_request_tokenfetch_access_token时允许传递任意参数。

v0.6.0(2015年12月14日)

  • 添加了Slack的合规性修复。

  • 添加了Mailchimp的合规性修复。

  • TokenRequestDenied异常现在携带整个响应,而不仅仅是状态码。

  • 在自动刷新令牌时传递关键字参数。

  • 在头部发送授权,而不仅仅是主体,以提高兼容性。

  • OAuth2会话客户端值现在有更多的获取器和设置器。

  • 在刷新令牌时允许发送自定义头部,并设置一些默认值。

v0.5.0(2015年5月4日)

  • 修复了在OAuth2流程中引发TypeError而不是TokenMissing错误。

  • 在OAuth2流程中的4XX和5XX响应上引发requests异常。

  • 在初始化没有完整客户端信息的OAuth2Session类时避免AttributeError

v0.4.2(2014年10月16日)

  • OAuth1Session和OAuth2Session上添加了新的authorized属性,这使得您能够轻松地确定会话是否已经通过OAuth令牌授权。

  • OAuth1Session添加了新的TokenMissingVerifierMissing异常类:这将使捕获和识别这些异常变得更容易。

v0.4.1(2014年6月6日)

  • 为使用OAuth1 RSA-SHA1签名方法的人添加了新的安装目标[rsa]

  • 修复了OAuth2中的错误,其中提供的state参数未在auth url中使用。

  • 可以通过设置环境变量OAUTHLIB_INSECURE_TRANSPORT来禁用OAuth2的HTTPS检查。

  • OAuth1现在在重定向时重新授权。

  • 当响应体编码不正确或请求被拒绝时,OAuth1令牌获取现在会引发详细的错误消息。

  • 添加了对自定义OAuth1客户端的支持。

  • Sina Weibo的OAuth2合规性修复。

  • 对facebook合规性修复进行了多次修复。

  • 合规性修复现在在Python 3中正确重新编码主体为字节。

  • 现在日志记录在 requests_oauthlib 命名空间下正确完成,而不是在 oauthlib 命名空间上附加。

  • 为 OAuth1 认证和会话引入了日志记录。

v0.4.0(2013年9月29日)

  • OAuth1Session 方法仅返回 Unicode 字符串。 #55。

  • 将 requests_oauthlib.core 重命名为 requests_oauthlib.oauth1_auth 以保持一致性。 #79。

  • 向 OAuth2Session 添加了 Facebook 兼容修复和 access_token_response 钩子。 #63。

  • 添加了 LinkedIn 兼容修复。

  • 添加了 refresh_token_response 兼容钩子,在解析刷新令牌之前调用。

  • 正确限制兼容钩子,只运行一次!

  • 仅在未提供内容类型时才应进行内容类型猜测

  • OAuth1 现在更新 r.headers 而不是用不区分大小写的字典替换它

  • 移除 OAuth1Session 中 Response.content 的最后使用。 #44。

  • 现在可以在 OAuth2Session.authorize_url 中提供状态参数

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源代码分发

requests-oauthlib-2.0.0.tar.gz (55.6 kB 查看哈希值

上传时间

构建分发

requests_oauthlib-2.0.0-py2.py3-none-any.whl (24.2 kB 查看哈希值

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面