【问题标题】:Box API get access_token through pythonBox API通过python获取access_token
【发布时间】:2015-09-18 20:29:05
【问题描述】:

提前感谢您的帮助。我正在通过自述页面上的这个网站获得授权码:https://app.box.com/api/oauth2/authorize?response_type=code&client_id=MY_CLIENT_ID&state=security_token%3DKnhMJatFipTAnM0nHlZA

并通过 python 为 access_token POST。但收到 invalid_request 错误。与我通过邮递员尝试的结果相同。 附上我的代码和错误信息,是不是我理解错了?

url = 'https://api.box.com/oauth2/token'
payload = {'grant_type':'authorization_code','code':auth_code,'client_id':'ID','client_secret':'SECRET'}
r = requests.post(url, data=json.dumps(payload))
json_r = r.json()
print json_r

错误信息:

{
  "error": "invalid_request",
  "error_description": "Invalid grant_type parameter or parameter missing"
}

【问题讨论】:

    标签: python api access-token box


    【解决方案1】:

    问题是当requests.post 函数的data 参数需要一个普通字典时,您将POST 有效负载编码为JSON 字符串。 所以只要这样做就可以了:

    r = requests.post(url, data=payload)
    

    【讨论】:

    • 它确实有效,非常感谢!但有时我用 JSON 字符串 POST 并且它有效。这有点令人困惑。感谢您的帮助!
    • @JoeyJiao 不客气!如果您使用 json 参数,也可以传递 JSON 字符串,即 requests.post(url, json=payload_as_json) - 也许这就是您感到困惑的原因?
    • 这也有效:requests.post(url, headers=headers, data=json.dumps(payload)) 并且:payload = {'name':'name', 'parent': {' id': '0'}} ...所以我感觉不清楚。非常感谢您的建议!
    猜你喜欢
    • 1970-01-01
    • 2019-01-04
    • 2022-08-12
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多