如何检测url回调请求

时间:2016-07-17 01:19:18

标签: python network-programming

我有一个本地运行的应用程序,可以对网站(tumblr.com)进行API调用。这涉及设置一些OAuth凭证;沿途的一步需要从服务器指向浏览器的回调URL中提取密钥。所以我目前用户所做的是:

  1. 在浏览器中打开授权链接,提示他们在网站上授权OAuth应用程序

  2. 点击网站上的授权页面(“是的,我允许xxxxx应用访问与我的帐户关联的某些信息”)

  3. 单击Authorize app向localhost发出请求,其中包含url中的参数。这意味着tumblr会将浏览器重定向到页面http://localhost/?oauth_token={TOKEN}&oauth_verifier={VERIFIER}#_=_。我认为这会导致在本地机器上发出请求。

  4. 要求用户将网址中的关键参数与浏览器的导航栏隔离,并将其粘贴到应用程序中。

  5. 那么有什么方法可以绕过第3步和第4步,只是让应用程序选择回调请求,而不是期望用户从浏览器中复制并粘贴它?我担心我对如何在python中处理网络请求知之甚少。

    要清楚,我需要做的是获取{VERIFIER}字符串。

1 个答案:

答案 0 :(得分:1)

首先,首先,对于http请求,一个好的python模块是requests

http://docs.python-requests.org/en/master/

然后,您的应用程序会向tumblr提供一个回调地址,以便tumblr可以告诉您的应用客户端信息或登录错误。

现在,你的观点3并不清楚。 “单击授权应用程序向localhost发出请求”

实际上为用户点击“授权应用”会向tumblr发出请求,表示他接受了。 然后tumblr向你的回调网址发出请求,通过信息。

回调网址应该是你的服务器地址,你必须有一个脚本监听tumblr,它会给你一个特殊的参数来调用它们的api ...

此外:

因此,当用户点击“授权应用”时,会向tumblr发出请求,该请求会将用户重定向到回调网址(添加oauth令牌和验证者)。

现在,显然,你不能要求每个用户在他们的计算机上运行http服务器。

因此,您必须将回调网址设置为您的服务器。

因此,如果您将其设置为“myserver.com/tumblr”,则用户将被重定向到您的网页,您将进入您的服务器,并为该用户会话提供oauths令牌和验证者。 / p>

并...

假设您的应用只是客户端,我会说有两种选择。

让您的用户手动输入他们的API密钥。

或者将网络服务器嵌入到您的应用中。

在嵌入式网络服务器的情况下,我建议烧瓶简单。 只需让您的Web服务器侦听给定端口并将回调URL设置为该服务器:port。

这样您就可以直接获得客户端令牌。