使用Python从生成的URL中提取令牌

时间:2014-03-18 05:31:57

标签: python python-2.7 oauth

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

我一直在尝试制作桌面客户端。简而言之,我已设法制作一个用于授权的URL。它就像http://www.samplesample.com/authorize/oauth_token=[bigassstringhere]&oauth_callback=http://sometokenrecievingurl.com

转到该网址,我被重定向到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]

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

1 个答案:

答案 0 :(得分:0)

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

OAuth 1.0a specification中所述:

  

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

这意味着您应该运行Web服务器以使用此授权协议。

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

  1. 从您的服务器获取提供商的请求令牌网址。您需要提供plenty of request parameterssign the request。您需要回复中的oauth_tokenoauth_token_secret。您应该将oauth_token_secret保存到DB或会话之类的持久性存储中,因为您将在以后的流程中使用它。
  2. 将用户重定向到您需要提供plenty of request parameters的提供商的用户授权网址,其中一个也是您在步骤1中获得的oauth_tokenoauth_callback网址 - 服务器的网址,供应商在授予用户访问权限后会重定向用户。
  3. 提供商会将用户重定向到您服务器上的oauth_callback网址。在这里,您应该从请求中获取oauth_verifieroauth_token并检索您在步骤1中存储的oauth_token_secret,然后将plenty of other request parameters包括signature一起发送到oauth_token服务器端提取到提供程序的访问令牌URL 。最后,回复应包含{{1}},这是您所需的访问令牌,您可以{{}}通过提供商API。
  4. 如果要在本机(非服务器)应用程序中授权用户,则应使用access the user's protected resources,它还支持OAuth 2.0的授权。但它也取决于提供者。

    我不建议您手动实现,尤其不是OAuth 1.0a,而是采用大量的python授权框架之一。