【问题标题】:Extracting token from generated URL with Python使用 Python 从生成的 URL 中提取令牌
【发布时间】:2014-04-23 15:33:16
【问题描述】:

如果这听起来很菜鸟,我真的很抱歉,但过去几天我一直在玩 Python。

我一直在尝试制作桌面客户端。长话短说,我已经设法让它生成一个用于授权的 URL。它就像http://www.samplesample.com/authorize/oauth_token=[bigassstringhere]&oauth_callback=http://sometokenrecievingurl.com

转到那个 URL,我被重定向到 http://sometokenrecievingurl.com?oauth_token=[anotherbigassstring]&oauth_verifier=[yetanotherbigassstring]

所以我的问题是有没有一种方法可以获取 oauth_token 和 oauth_verifier 值,而无需手动复制和粘贴 URL 以进行授权?就像 python 有没有办法自己检查生成的 URL,检查它重定向到的 URL,然后切掉 oauth_token 和 oauth_verifier 部分?

再次抱歉,如果这对外面的人来说听起来很简单。我不确定,因为我对此真的很陌生,而且我一直在寻找相关问题,但没有运气。或者,也许我只是在查看错误的链接或条款。但是,是的,我们将不胜感激。


编辑

好的,所以我继续玩,我发现我完全忘记了这里的一步。生成的 URL 实际上会将您定向到我需要单击是否允许访问的页面。单击允许后,这是我唯一一次被重定向到http://sometokenrecievingurl.com?oauth_token=[anotherbigassstring]&oauth_verifier=[yetanotherbigassstring]

所以我想知道,如何继续从打开的浏览器中提取这些字符串?

【问题讨论】:

  • 看看你是否从herehere得到任何有用的东西

标签: python python-2.7 oauth


【解决方案1】:

根据您的网址中是否存在oauth_verifier,您正试图通过OAuth 1.0a 授权流程。

OAuth 1.0a specification中所述:

OAuth 协议使网站或应用程序(消费者)能够通过 API 从 Web 服务(服务提供者)访问受保护的资源

这意味着你应该运行一个网络服务器来使用这个授权协议。

OAuth 1.0a 授权流程大致如下:

  1. 从您的服务器获取提供者的请求令牌 URL。您需要提供plenty of request parameterssign the request。您将需要响应中的 oauth_tokenoauth_token_secret。您应该将 oauth_token_secret 保存到一些持久性存储中,例如 DB 或会话,因为稍后在流程中将需要它。
  2. 将用户重定向到您需要提供plenty of request parameters的提供商的用户授权URL,其中之一也是您在步骤1中获得的oauth_tokenoauth_callback URL - 您的服务器的 URL,在他/她授予对您的应用程序的访问权限后,提供者将重定向用户。
  3. 提供商将用户重定向到您服务器上的oauth_callback URL。在这里,您应该从请求中获取 oauth_verifieroauth_token 并检索您在步骤 1 中存储的 oauth_token_secret 并使用 plenty of other request parameters 将它们全部发送到服务器端提取中的 signature提供者的访问令牌 URL。最后,响应应该包含oauth_token,这是您想要的访问令牌,您可以使用它通过提供程序API access the user's protected resources

如果您想在本机(非服务器)应用程序中授权用户,那么您应该使用OAuth 2.0,它也支持native applications 的授权。但这也取决于提供者。

我不建议您手动实现此功能,尤其不是 OAuth 1.0a,而是求助于大量 python 授权框架之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    相关资源
    最近更新 更多