Python 请求和 Instagram
Python requests and instagram
我正在玩 instagram api 和请求,试图通过 OAuth。我使用 r = requests.get(...)
并关注 instagram 文档。但是,请求的输出从来都不是我所期望的。我遇到了 2 个有些相似的问题。
1) 如果我发送了错误的参数,我希望返回 JSON 看起来像
{"code": 400, "error_type": "OAuthException", "error_message": "You must include a valid client_id, response_type, and redirect_uri parameters"}
如果我将 r.url
中的字符串粘贴到浏览器中,我会看到什么。然而 r.json()
只是失败并给了我
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
2) 正确的响应应该将我重定向到我的重定向 url,其中还将包含一个代码。同样,将 r.url
粘贴到浏览器中时,这可以正常工作。我已按预期成功重定向。请求似乎没有重定向我,即使明确设置 allow_redirects=False
。我只需要阅读 url 中的代码。我怎样才能得到请求给我最终的 url 来提取代码?
编辑:不妨包括一些代码。
def get_code(client_id, redirect_uri, scope="basic"):
params = {"client_id": client_id,
"redirect_uri": redirect_uri,
"response_type": "code",
"scope": scope}
r = requests.get('https://api.instagram.com/oauth/authorize/',
params=params)
# print r.url
# print r.json()
return r
它会在 documentation 中告诉您到底发生了什么,此时,我们向用户展示一个登录屏幕,然后是一个确认屏幕,在该屏幕上授予您的应用访问她的 Instagram 的权限data,如果您 运行 下面的代码片段,您将在浏览器中看到一个登录框:
import requests
import webbrowser
from tempfile import NamedTemporaryFile
params = {"client_id": client_id,
"redirect_uri": redirect_uri,
"response_type": "code",
"scope": scope}
with NamedTemporaryFile(dir=".", delete=0) as f:
r = requests.get('https://api.instagram.com/oauth/authorize/',
params=params)
f.write(r.content)
webbrowser.open(f.name)
我正在玩 instagram api 和请求,试图通过 OAuth。我使用 r = requests.get(...)
并关注 instagram 文档。但是,请求的输出从来都不是我所期望的。我遇到了 2 个有些相似的问题。
1) 如果我发送了错误的参数,我希望返回 JSON 看起来像
{"code": 400, "error_type": "OAuthException", "error_message": "You must include a valid client_id, response_type, and redirect_uri parameters"}
如果我将 r.url
中的字符串粘贴到浏览器中,我会看到什么。然而 r.json()
只是失败并给了我
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
2) 正确的响应应该将我重定向到我的重定向 url,其中还将包含一个代码。同样,将 r.url
粘贴到浏览器中时,这可以正常工作。我已按预期成功重定向。请求似乎没有重定向我,即使明确设置 allow_redirects=False
。我只需要阅读 url 中的代码。我怎样才能得到请求给我最终的 url 来提取代码?
编辑:不妨包括一些代码。
def get_code(client_id, redirect_uri, scope="basic"):
params = {"client_id": client_id,
"redirect_uri": redirect_uri,
"response_type": "code",
"scope": scope}
r = requests.get('https://api.instagram.com/oauth/authorize/',
params=params)
# print r.url
# print r.json()
return r
它会在 documentation 中告诉您到底发生了什么,此时,我们向用户展示一个登录屏幕,然后是一个确认屏幕,在该屏幕上授予您的应用访问她的 Instagram 的权限data,如果您 运行 下面的代码片段,您将在浏览器中看到一个登录框:
import requests
import webbrowser
from tempfile import NamedTemporaryFile
params = {"client_id": client_id,
"redirect_uri": redirect_uri,
"response_type": "code",
"scope": scope}
with NamedTemporaryFile(dir=".", delete=0) as f:
r = requests.get('https://api.instagram.com/oauth/authorize/',
params=params)
f.write(r.content)
webbrowser.open(f.name)