使用帐户用户名而不是用户ID获取用户的近期媒体

时间:2017-05-25 23:43:14

标签: instagram instagram-api

所以我想使用Instagram API来获取特定用户(不是我的用户)最近的媒体。 Instagram有以下终点:

(GET) https://api.instagram.com/v1/users/{user-id}/media/recent/?access_token=ACCESS-TOKEN

这是一个问题,因为我没有用户的ID(为什么我,Instagram?)。我所拥有的是帐户用户名(与大多数人一样),例如@thisisauser。

我一直在阅读API文档,但我找不到能够为我提供特定帐户用户名的用户ID的端点。我的意思是,是的,有:

(GET) https://api.instagram.com/v1/users/search?q=jack&access_token=ACCESS-TOKEN

...但它没有做我需要它做的事情,那就是搜索完全匹配。

我还查看了Stack Overflow和其他网站上的其他主题。但是,提供的替代解决方案充其量只是可疑

这件事实际上是一个实际问题让我感到惊讶。我的意思是, SURELY 有一个合法的,Instagram批准的,精确和直接的方式:

  • 通过提供帐户用户名获取用户最近的媒体(这是人们通过...而不是一系列数字知道的)
  • 通过完全匹配搜索获取用户的ID,不会有多种可能的结果

仅供参考:我正在使用PHP和cURL进行服务器端。

附注:如果我必须单独向API发出请求以将帐户用户名转换为用户ID,那只会浪费一个请求,每小时限制一次。只是一个观察,以防Instagram团队的任何成员碰巧看到这一点。

3 个答案:

答案 0 :(得分:3)

您可以通过请求此网址获取所有用户的信息(包括ID):

https://www.instagram.com/{username}/?__a=1

例如,这会获取与帐户taylorswift相关的所有信息:

https://www.instagram.com/taylorswift/?__a=1

答案 1 :(得分:0)

我无法在API中找到获取用户名媒体的任何内容。但是,通过使用搜索端点,您可以找到获取用户媒体的解决方案。

由于您正在使用PHP cURL,您可以执行以下操作:

//this is what was returned by cURL
$response = /*what was returned by the API - see below*/

{
"data": [{
    "username": "jack",
    "first_name": "Jack",
    "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_66_75sq.jpg",
    "id": "66",
    "last_name": "Dorsey"
},
{
    "username": "sammyjack",
    "first_name": "Sammy",
    "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_29648_75sq_1294520029.jpg",
    "id": "29648",
    "last_name": "Jack"
},
{
    "username": "jacktiddy",
    "first_name": "Jack",
    "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_13096_75sq_1286441317.jpg",
    "id": "13096",
    "last_name": "Tiddy"
}]
}

//username I am looking for
$user = 'jack';

//filter array response to find exact username you are looking for
$filter = array_filter($response,function($userdata) use ($user){
    if($userdata['username'] == $user){
        return $userdata;
    }
  });

//now use ID from filtered array to get media
$url = 'https://api.instagram.com/v1/users/' . $filter['id'] . '/media/recent/?access_token=ACCESS-TOKEN';

答案 2 :(得分:-1)

您可以找到用户ID !!!

像这样:

<html>
<head>
<script src="jquery.js" type="text/javascript" ></script>
<script type="text/javascript">
  $(document).ready(function(){
     $.ajax({
            type: 'GET',
            url: 'https://api.instagram.com/v1/users/self/?access_token=' + window.location.hash.substring(14),
            dataType: 'jsonp'}).done(function(response){
                 var userid = response.data.id; 
            });
  });
</script>
</head>
<body>
</body>
</html>

并保存到您的数据库中。然后当需要找到它并使用该方式查找最近的用户媒体时:

https://api.instagram.com/v1/users/{user-id}/media/recent/?access_token=ACCESS-TOKEN

这种方式我觉得很好。 你也可以用 php 发送一个json。