【问题标题】:Retrieve the access token from POST request and use in GET request从 POST 请求中检索访问令牌并在 GET 请求中使用
【发布时间】:2016-06-27 07:39:21
【问题描述】:

我正在使用 requests 库发出 POST 请求以获取访问令牌。我的请求可以正常工作,但是我不确定如何提取它然后在 GET 请求中使用它。

url = 'https://login.insideview.com/Auth/login/v1/token'
payload = {'clientId' : '****', 'clientSecret' : '****','grantType':'cred'}
headers = { 'Accept' : 'application/json'}
r = requests.post(url, headers=headers, params=payload)

solution:  
data = json.loads(r.text)
data['accessTokenDetails']['accessToken']

返回:

{"accessTokenDetails":{"accessToken":"the_access_token","tokenType":"bearer","expirationTime":"Fri, Mar 25, 2016 09:59:53 PM GMT","userInfo":{"userId":null,"firstName":null,"lastName":null,"userName":null,"companyName":null,"accountId":null,"role":null}}}

【问题讨论】:

    标签: python python-requests oauth2


    【解决方案1】:

    如果它返回一个dict,为什么不照常访问它的内容?

    token = r['accessTokenDetails']['accessToken']
    

    【讨论】:

    • 不知道我可以这样访问。还必须使用json.loads,所以我猜它不是字典。你介意提供一个解释吗?有点 Python 的初学者。谢谢!
    • 使用 JSON 加载请求的结果绝对没问题。 JSON 解析的结果始终是 dict,您可以像往常一样使用它。
    【解决方案2】:

    @michael-queue 从请求到 JSON 端点的响应是 JSON 编码的字符串。要将其加载到字典中并访问内部属性,需要将 json.loads(json_string) 放入 Python 中。对于相反的操作,将字典转储为 JSON 字符串是 json.dumps(dictionary)

    【讨论】: