使用python中的Box API从url获取HTTP GET参数

时间:2013-12-03 00:10:05

标签: python api box-api

我正在使用python处理Box.com API,并且在自动执行身份验证过程中遇到一些麻烦。

我可以将我的API密钥和客户端密钥提供给Box。一旦Box.com接受我的登录凭据,他们就会向我提供HTTP GET参数,例如

'http://www.myapp.com/finish_box?code=my_code&'

我希望能够使用python读取和存储my_code。有任何想法吗?我是python和处理API的新手。

2 个答案:

答案 0 :(得分:2)

这实际上是一个比看起来更健壮的问题,因为它通常会向web dev公开一些有用的功能。您基本上是在询问如何在字符串my_code中分隔'http://www.myapp.com/finish_box?code=my_code&'

好吧,让我们把它点点滴滴。首先,你知道你只需要问号之后的东西,对吧?我的意思是,你不需要知道你从哪个网站获得它(虽然保存起来很好,但是如果我们以后需要的话,请保留它),你只需要知道传回的参数是什么。让我们从String.split()开始:

>>> return_string = 'http://www.myapp.com/finish_box?code=my_code&'

>>> step1 = return_string.split('?')
["http://www.myapp.com/finish_box","code=my_code&"]

这将向包含两个元素"http://www.myapp.com/finish_box""code=my_code&"的step1返回一个列表。好吧,我们在那里!让我们再次在等号上拆分第二个!

>>> step2 = step1[1].split("=")
["code","my_code&"]
那很好看,我们差不多完成了!但是,这并没有真正允许它的更强大的用途。如果相反我们会给予:

>>> return_string = r'http://www.myapp.com/finish_box?code=my_code&junk_data=ohyestheresverymuch&my_birthday=nottoday&stackoverflow=usefulplaceforinfo'

突然间,我们的计划无效。让我们在&符号上打破第二个集合,因为这就是将键值分开的原因。

step2 = step1[1].split("&")
["code=my_code",
"junk_data=ohyestheresverymuch",
"my_birthday=nottoday",
"stackoverflow=usefulplaceforinfo"]

现在我们到了某个地方。让我们把它们当作一个字典,我们呢?

>>> list_those_args = []
>>> for each_item in step2:
>>>   list_those_args[each_item.split("=")[0]] = each_item.split("=")[1]

现在我们在list_those_args中有一个字典,其中包含GET传回给你的每个参数的键和值!科学!

那么你现在如何访问它?

>>> list_those_args['code']
my_code

答案 1 :(得分:0)

您需要一个网络服务器和一个cgi脚本来执行此操作。我已经为此设置了一个python脚本解决方案来运行它。您可以在以下位置查看我的代码:

https://github.com/jkitchin/box-course/blob/master/box_course/cgi-bin/box-course-authenticate

当您访问脚本时,它会将您重定向到框以进行身份​​验证。验证后,如果传入请求中有“代码”,则会抓取代码并将其重定向到授予令牌的站点。

您必须设置.htaccess文件来存储您的密钥和ID。

相关问题