问题标签 [requests-oauthlib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
2400 浏览

oauth-2.0 - Web 应用程序缺少 Google OAuth 2 刷新令牌,但本地主机存在

问题:缺少 OAuth 2 刷新令牌。

问题是 localhost 版本接收 aRefresh Token作为授予令牌的一部分,但在 GCE 中运行的相同代码没有。

细节:

我编写了一个实现 Google OAuth 2.0 的 Python Flask 应用程序。此 Web 应用程序使用经过验证的域名、有效的 SSL 证书和 HTTPS 端点在云中运行。这个未经修改的 Web 应用程序也可以作为localhost. 运行时的区别在于 localhost 版本不使用 TLS。代码流没有其他区别。

除了Refresh Token缺少并且我无法自动更新 a之外token,一切正常。

我对这个问题进行了广泛的研究。诸如此类的 API 问题access_type=offline已正确实现,否则我将无法Refresh Tokenlocalhost版本中获得。

我正在使用requests_oauthlibpython库。

令牌refresh_token在运行时有,localhost但在云中运行时没有。

此 Google 文档讨论了刷新令牌,这表明 Web 应用程序支持此功能。

刷新访问令牌(离线访问)

[2018 年 11 月 18 日更新]

我发现了这个错误报告,它给了我一个改变我的代码的提示:

对此:

现在我在公共服务器版本和本地主机版本中收到刷新令牌。

接下来,我搜索了有关该prompt选项的文档,发现了这个:

OpenID 连接提示

提示(可选)

以空格分隔的字符串值列表,指定授权服务器是否提示用户重新进行身份验证和同意。可能的值是:

none 授权服务器不显示任何身份验证或用户同意屏幕;如果用户尚未经过身份验证并且尚未为请求的范围预先配置同意,它将返回错误。您可以使用 none 检查现有的身份验证和/或同意。

同意 授权服务器在向客户端返回信息之前提示用户同意。

select_account 授权服务器提示用户选择用户帐户。这允许在授权服务器上拥有多个帐户的用户在他们可能具有当前会话的多个帐户中进行选择。

如果未指定任何值且用户之前未授权访问,则向用户显示同意屏幕。

我认为应该更新谷歌文档。在同一页面上,出现以下文本:

access_type (可选)

允许的值是离线和在线。效果记录在离线访问中;如果正在请求访问令牌,则客户端不会收到刷新令牌,除非指定了脱机。

该声明让我很困惑,试图调试为什么我无法获得公共服务器版本的刷新令牌,但我可以获得 localhost 版本。

0 投票
2 回答
1677 浏览

python - python中带有用户名和密码的oauth1.0

我正在尝试将 qwikcilver API 集成到我的项目中。他们使用 oauth1.0 进行身份验证。我正在为 oauth1.0 使用requests-oauthlib python lib。
这是我的身份验证代码。

我的查询如下,
qwikcilver 有用户名和密码。我尝试了很多在代码中发送用户名和密码但没有工作。

如何在 requests-oauthlib 请求函数中传递用户名和密码?

0 投票
1 回答
714 浏览

python - oauth2client 现在已弃用

在通过 API 从 Google Analytics( https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-py )请求数据的 Python 代码中,使用了 oauth2client。该代码最后一次更新是在 2018 年 7 月,直到现在 oauth2client 已被弃用。我的问题是我可以获得相同的代码,而不是使用 oauth2client、google-auth 或 oauthlib 吗?

我正在谷歌上搜索如何替换正在使用 oauth2client 的代码部分的解决方案。然而,由于我不是开发人员,所以我没有成功。这就是我尝试将此链接(https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-py)中的代码调整为google-auth的方式。知道如何解决这个问题吗?

0 投票
1 回答
1190 浏览

python - (如何)我可以使用 requests.OAuth2Session 发送(准备好的)请求吗?

运行以下命令时(example.com显然,用我们的 API 替换)

以下返回<Response [200]>

但这会返回<Response [401]>

Request通过发送原始对象时如何重用它OAuth2Session

0 投票
1 回答
136 浏览

python-3.x - OAUTH2 在 localhost(带有 sub.domain.com)中运行良好,但在服务器中因“401 url not authorized”而失败

经过大量的工作和学习。我在带有 gunicorn 的烧瓶中开发了一个身份验证服务 OAUTH2,使用模块 requests-oauthlib 并具有到 nginx 的反向代理,所有这些都在 docker-compose(alpine images) 中,因为我是新手,我想要它有所有的味道: )。它在我的本地环境中完美运行,它使用子域“oauth2.example.com:5000”,我在最后一步从 api 接收到带有用户数据的令牌和 json,一切正常,但是当它传递到生产环境 ( https://oauth2.example.com ) 它失败并显示消息“401 未经授权的 url”。我用于此测试的 api 服务是 Linkedin

我已经尝试过什么?

  • 使用其他主机
  • 检查授权网址
  • 使用邮递员验证收到的令牌(在本地和生产中)是否有效
  • docker 外的测试
  • 检查回调网址
  • 也许我需要在某个地方(Linkedin)注册我的域?

感谢您的帮助伙伴。

0 投票
1 回答
740 浏览

python - 与我在 Microsoft Graph 中使用 requests_oauthlib 请求的范围不同

我正在使用 requests_oauthlib 库创建一个 Python 脚本来使用 Microsoft Graph API 服务。我能够成功创建 OAuth2.0 会话,获取授权 URL 以在 Internet 浏览器窗口中打开以进行身份​​验证,然后我被重定向到我之前在 Azure 门户中注册我的应用程序时指示的重定向 URL ( https ://portal.azure.com)。然后我复制完整的重定向 URL 以粘贴到我的应用程序中。此时,我的应用程序读取我粘贴的 URL,将嵌入在 URL 中的身份验证代码交换为完全有效的 OAuth 身份验证令牌。为了确保,我在https://jwt.ms中检查了它,除了授予的范围外,它是完美的。这些范围与我在 OAuth 会话中请求的范围不匹配。

脚本代码

但我收到以下警告消息:

警告:范围已从“ https://graph.microsoft.com/User.Read https://graph.microsoft.com/offline_access ”更改为“profile https://graph.microsoft.com/User.Read openid email ”。

AZURE 门户中的 API 权限

Microsoft Graph (2) Files.ReadWrite.All offline_access

正如您在上面的 Azure 权限中看到的,Azure 门户中的权限(范围)与我请求的范围完全相同,所以我的问题是这些“ openid ”和“电子邮件”范围是从哪里来的?我已经能够克服警告消息,但我无法请求我需要的权限。我什至在 Azure 门户中创建了一个全新的应用程序,但我遇到了同样的问题。requests_oauthlib库有问题还是我做错了什么?

谢谢

0 投票
2 回答
115 浏览

oauth - 如何使用 Oauth1 获得永久令牌?

我通过自己编写的网站在线销售产品。为了管理我的履行流程,在进行购买时,我希望我的应用程序自动在 Trello 板上创建一张卡片。

除了几分钟后我使用的令牌过期外,我已经设法做所有事情,即使我认为我创建了一个永不过期的令牌。

每次收到订单时,我都无法手动进行身份验证。

这是我为生成令牌而编写的代码。(Oauth1)。

第 1 步(一次):获取手动授权的资源所有者密钥、资源所有者密钥和验证者。

第 2 步(每次):使用资源所有者密钥、资源所有者密钥和验证者生成令牌。

步骤 3:在 POST 请求中使用令牌制作卡片。

这一切都可以正常工作几分钟,然后在尝试再次使用它时出现错误:

我以为那个令牌是永远存在的?我仍然可以在 Trello 上的帐户详细信息下看到:

0 投票
0 回答
90 浏览

python - Twitter API - 请求延迟问题 - 随机延迟?- Python 请求

一旦我发送了我的请求,它们就会立即返回,但似乎存在一个问题,即我在请求之间会突然出现随机延迟!?我真的要求不要拖延,寻找我能得到的所有帮助!

0 投票
1 回答
1130 浏览

python - 如何使用 Oauth2Session (requests_oauthlib) 添加 http 标头和数据以将 POST 请求发送到 API 端点?

我有一个像这样的 python 代码来与 API 交互

当我运行这个 py 文件时,我从 API 得到这个响应,我必须在 header 中包含内容类型。如何在 Oauth2Session 中包含标头?

0 投票
0 回答
64 浏览

python-3.x - requests_oauthlib 是否默认缓存,我什至应该缓存吗?

我正在通过 Discord 授权我网站上的人。但是,我不想向他们的 API 发送垃圾邮件,requests_oauthlib 中的 .get 方法是否缓存了响应,因此它不会发送重复的请求?如果没有,有什么方法可以这样做,是否建议这样做?

谢谢