代码之家  ›  专栏  ›  技术社区  ›  Aidan Doherty

如何显示具有新api权限的简单instagram提要

  •  1
  • Aidan Doherty  · 技术社区  · 8 年前

    我正在尝试在django cms上设置一个instagram插件,通过插件中设置的用户名在主页上显示我最近的图片。似乎你再也不能简单地从instagram获取公共内容了。这是我在沙箱帐户中使用的当前方法。

    user_request = requests.get("https://api.instagram.com/v1/users/search?q=" + str(instance.username) + "&access_token=" + settings.INSTAGRAM_ACCESS_TOKEN)
    user_id = user_request.json().values()[1][0]["id"]
    r = requests.get("https://api.instagram.com/v1/users/"+ user_id +"/media/recent/?access_token=" + settings.INSTAGRAM_ACCESS_TOKEN + "&count=" + str(instance.limit))
    recent_media = r.json()
    

    上面的代码从插件模型中获取用户名,并向instagram api发出get请求以获取该用户(我听说这个方法并不总是显示正确的用户,因为它只是搜索并从列表中获取第一个用户)。

    这是使用instagram api和python的正确方法吗?我本来打算使用python instagram,但现在不再支持。我能想到的唯一的另一种方法是在网站上验证用户身份并使用他们的访问令牌,这对于我需要它的目的来说似乎很愚蠢。

    编辑: 删除用户名字段并添加access_token是否是更好的方法?然后使用“/users/self/media/recent”并排除按用户名搜索用户的查询。

    1 回复  |  直到 8 年前
        1
  •  1
  •   krisrak    8 年前

    是的,第一个结果并不总是匹配的,您需要循环浏览所有搜索结果,并将用户名与搜索的用户名进行比较,然后获取id

    类似这样:

    var user_id = 0;
    user_request.json().values()["data"].forEach(function(user){
        if(user.username == str(instance.username)){
            user_id = user["id"]
        }
    });
    if(user_id){
        // make api call
    } else {
        // user not found
    }