【问题标题】:grabbing HTTP GET parameter from url using Box API in python在 python 中使用 Box API 从 url 中获取 HTTP GET 参数
【发布时间】:2013-12-03 00:10:04
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python api box-api


    【解决方案1】:

    这实际上是一个比看起来更健壮的问题,因为它通常公开了一些对 web 开发有用的功能。您基本上是在问如何在字符串'http://www.myapp.com/finish_box?code=my_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&"]
    

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

    >>> 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
    

    【讨论】:

    • 谢谢!另一个问题,如何使用 Python 自动获取该 url?登录通过身份验证后,网页会将我重定向到'http://www.myapp.com/finish_box?code=my_code&'。我不知道如何从 Python 访问和存储这个 url。
    • 恐怕我不知道这个特定的 API 是如何工作的,所以我不能告诉你。如果您有提交请求的 Python 代码,您应该能够使用 Python 来听取答案,但我不确定如何。一个非自动的解决方法是提示用户输入它。也许url = raw_input("Please enter the URL in your browser window: ") 然后改用那个位。我不太确定。
    • 不用担心,非常感谢。
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 2022-01-26
      • 1970-01-01
      • 2021-12-29
      • 2019-02-02
      • 2018-12-05
      相关资源
      最近更新 更多