【问题标题】:Python requests and instagramPython 请求和 Instagram
【发布时间】:2016-06-17 20:02:02
【问题描述】:

我正在使用 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

【问题讨论】:

  • 您如何验证?文档的链接也很好
  • 我尝试了隐式和显式方法(这一步它们本质上是相同的)。以下是文档:instagram.com/developer/authentication
  • json 没有被解析,因为它是登录表单的 html。尝试在浏览器中清除 instagram.com 的 cookie,您应该会看到登录表单。
  • 另外,看看python-instagram
  • 这很有意义。不知道我是如何忽略它的。谢谢

标签: python python-requests instagram


【解决方案1】:

它会在 documentation 中告诉您究竟发生了什么,此时,我们会向用户显示一个登录屏幕,然后是一个确认屏幕,您可以在其中授予您的应用访问她的 Instagram 数据的权限,如果您运行下面的 sn-p,您将在浏览器中看到一个登录框:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多