【问题标题】:Find out access token sent as header using python-requests使用 python-requests 找出作为标头发送的访问令牌
【发布时间】:2017-09-11 15:49:32
【问题描述】:

当使用 curl 调用 API 时,它会返回响应,而当使用 python 中的 requests 库调用相同的 API 时,会产生错误:

卷发:

curl -X GET --header "Accept: application/json" --header "Authorization: oauth_code" "https://api.getgo.com/G2W/rest/organizers/5913931473742004748/historicalWebinars?fromTime=2017-07-13T10%3A00%3A00Z&toTime=2017-09-10T10%3A00%3A00Z"

请求代码:

import requests
import datetime
date_11_days_back = (datetime.datetime.now() - datetime.timedelta(days=11)).isoformat()
date_now = datetime.datetime.now().isoformat()
webinars_url = "https://api.getgo.com/G2W/rest/organizers/5913931473742004748/historicalWebinars"
params = {
    'fromTime': date_11_days_back,
    'toTime': date_now
}
headers = {
    'Authorization': 'oauth_token'
}

last_week_webinars = requests.get(webinars_url, headers=headers, params=params)

此调用导致错误提示 b'{"errorCode":"InvalidRequest","description":"Your request could not be processed because one or more of the request parameters are an invalid type.","incident":"5308828452798993933"}'

我知道,这是 API 特有的。

如下传递headers也会产生错误:

headers = {
        'Authorization': "TOK:{}".format(goto_webinar_access_token)
    }

错误:b'{"int_err_code":"InvalidToken","msg":"Invalid token passed"}'

我想看看token 是作为http 调用的一部分发送的。怎么会这样。

【问题讨论】:

    标签: python-3.x curl python-requests


    【解决方案1】:

    使用http://httpbin.org/get怎么样?您可以看到使用它的访问令牌。示例脚本和结果如下。

    示例脚本:

    import requests
    import datetime
    date_11_days_back = (datetime.datetime.now() - datetime.timedelta(days=11)).isoformat()
    date_now = datetime.datetime.now().isoformat()
    webinars_url = "http://httpbin.org/get"
    params = {
        'fromTime': date_11_days_back,
        'toTime': date_now
    }
    headers = {
        'Authorization': "TOK:{}".format("### access token ###")
    }
    
    last_week_webinars = requests.get(webinars_url, headers=headers, params=params)
    print(last_week_webinars.text)
    

    结果:

    {
      "args": {
        "fromTime": "2017-01-01T00:00:00.000000",
        "toTime": "2017-01-02T00:00:00.000000"
      },
      "headers": {
        "Accept": "*/*",
        "Accept-Encoding": "gzip, deflate",
        "Authorization": "TOK:### access token ###",
        "Connection": "close",
        "Host": "httpbin.org",
        "User-Agent": "python-requests"
      },
      "origin": "#####",
      "url": "http://httpbin.org/get?toTime=2017-01-02T00%3a00%3a00%2e000000&fromTime=2017-01-01T00%3a00%3a00%2e000000"
    }
    

    如果我误解了你的问题,我很抱歉。

    【讨论】:

      【解决方案2】:

      我想看到的是 TOKEN 作为标头的一部分传递,作为请求触发的 HTTP 请求的一部分传递。

      您可以通过以下方式查看它。

      response.request.headers :这向您显示了所有传递的标头及其相应的值。

      此外,要找出响应(即有问题的 last_week_webinars)标题,response.headers 给出了答案。

      我的请求的问题还在于 fromTimetoTime 的传递方式。

      【讨论】:

        猜你喜欢
        • 2019-11-04
        • 2021-10-30
        • 1970-01-01
        • 1970-01-01
        • 2021-11-04
        • 2016-11-23
        • 2014-09-02
        • 2019-06-04
        相关资源
        最近更新 更多