如何从facebook api调用返回的http响应中获取vaules

时间:2015-07-26 10:02:56

标签: django facebook facebook-graph-api

通过向facebook提出长期访问令牌请求,我成功收到了回复.. 我向 - 提出了要求 - https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=5096586391&client_secret=4201c4b846d3be4a9fe44&fb_exchange_token=CAAHPiCYlSlMByTFMCY4Er1Yzs1HrOzwpdZCU1VVpdKlvkUg6Rab1KUpFZBYfYNvk7lq0rsWzJjdXnUKFqjMiklxGcoRVjlKmb5fRr51N7Hp7Mpm4Fui0LALXp8ZCSPoN1c9mUN15Gm6BW5rmfdkPW9F1mGgxNZB1kI85TMqgTpEcW1ZCOW7ZB9MaYzmorx8g30N9JwZD

得到回应 - =的access_token&CAAHPiCYlSlMBVxXSx29aMW6K2E6ol8xISfzoiZAEvJnhiBgPB2BTzCMTZCIlSKaiZCnJny0XP9fLm73DU4EWJDrldEwYzW0ZAcILVm5S7D2wM6y0Nf68tWUMZCrZCdwFIKqilFS9wDXlYebYpQMyfDtCcH2kfHfQZBKMGMIGeEZA26xJeQvp0d1MMlgsVSy放大器;期满= 5182755

现在我如何从上面的http响应中获取access_token和expires的值 我正在使用django并使用'requests'库发出请求。 我无法在json中转换它

1 个答案:

答案 0 :(得分:0)

使用response.json()获取access_tokenexpires的值。

requests库中的builtin-JSON decoder返回响应的json编码内容(如果有)。

我们将对从Facebook API收到的回复发送.json()。这将为我们提供一个字典,其中包含响应的json编码内容。现在,我们将在字典中为键access_tokenexpires执行查找。

您可以执行以下操作:

import requests

response = requests.<method_name>('https://graph.facebook.com/...') # get the response

json_response = response.json() # Returns the json-encoded content of a response in a dictionary

access_token = json_response['access_token'] # lookup the value of `access_token` in the dictionary
expires = json_response['expires'] # lookup the value of `expires` in the dictionary

编辑:这适用于API版本&gt; = 2.3(感谢@CBroe

根据Facebook API docs

  

在v2.3中,所有Graph API响应现在都将有效的空数组序列化   JSON格式。

     

[Oauth访问令牌]格式 - 的响应格式   你https://www.facebook.com/v2.3/oauth/access_token回来了   交换access_token的代码现在返回有效的JSON而不是   正在进行URL编码。此响应的新格式为{“access_token”: <TOKEN>, “token_type”:<TYPE>, “expires_in”:<TIME>}。我们成功了   更新以符合RFC 6749的5.1节。

适用于API版本&lt; 2.3:

access_token的响应格式将进行网址编码。您必须解析已编码的网址,并从@CBroe中提取access_token