Получение последних медиафайлов пользователя с именем пользователя учетной записи вместо идентификатора пользователя

Итак, я хочу использовать Instagram API, чтобы получить недавние медиафайлы конкретного пользователя (НЕ МОЙ ПОЛЬЗОВАТЕЛЬ). Для этого у Instagram есть следующая конечная точка:

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

Это проблема, потому что у меня нет идентификатора пользователя (зачем мне, Instagram?). У меня есть имя пользователя учетной записи (как и у большинства людей), например @thisisauser.

Я читал документацию по API и не могу найти конечную точку, которая предоставит мне идентификатор пользователя для конкретного имени пользователя учетной записи. То есть да, есть:

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

... но он не выполняет то, что мне нужно, а именно поиск точного совпадения.

Я также проверил другие темы на Stack Overflow и других сайтах. Однако предлагаемые альтернативные решения в лучшем случае сомнительны.

Тот факт, что все это актуально, меня удивляет. Я имею в виду, ОБЯЗАТЕЛЬНО существует законный, одобренный Instagram, точный и простой способ:

  • получение последних медиафайлов пользователя, указав имя пользователя учетной записи (по которому люди вас знают ... а не последовательность цифр) ИЛИ
  • получение идентификатора пользователя с помощью поиска с точным соответствием, без возможности получения нескольких возможных результатов

К вашему сведению: я делаю это на стороне сервера, используя PHP и cURL.

Боковое примечание: если мне нужно сделать отдельный запрос к API, чтобы преобразовать имя пользователя учетной записи в идентификатор пользователя, это просто пустая трата запроса, еще один для почасового лимита. Просто наблюдение, на случай, если кто-нибудь из команды Instagram это увидит.


person Emmanuel Figuerola    schedule 25.05.2017    source источник
comment
Кстати: когда я говорю «сомнительно», я имею в виду такие методы, как использование общедоступного URL-адреса из внешнего интерфейса Instagram для получения идентификатора пользователя.   -  person Emmanuel Figuerola    schedule 26.05.2017
comment
Я на телефоне банкомат, отвечу, когда буду дома.   -  person Hevar    schedule 29.05.2017
comment
Идентификатор конечной точки похож на instagram.com/therock/?__a=1 что ты ищешь?   -  person therobinkim    schedule 30.05.2017
comment
Да, в этом случае идентификатор @ therock будет 232192182, возвращенный в ответе JSON. Однако упомянутая вами конечная точка не указана в документации Instagram API и, похоже, является скорее интерфейсным ресурсом для сайта Instagram.   -  person Emmanuel Figuerola    schedule 30.05.2017
comment
https://api.instagram.com/v1/users/search?q=jack&access_token=ACCESS-TOKEN не возвращает точное совпадение (если оно существует) в качестве первого результата? Разве вы не можете просто взять идентификатор из 1-го результата, убедившись, что это точное совпадение?   -  person therobinkim    schedule 30.05.2017
comment
По-видимому, бывают случаи, когда точное совпадение не является первым результатом или вообще отсутствует, как обсуждается здесь: stackoverflow.com/questions/12770169/   -  person Emmanuel Figuerola    schedule 30.05.2017
comment
Также очень расточительно (из-за ограничений скорости API) делать ДРУГОЙ запрос к API каждый раз, когда мне нужно узнать идентификатор другого пользователя.   -  person Emmanuel Figuerola    schedule 30.05.2017


Ответы (3)


Вы можете получить всю информацию о пользователе (включая идентификатор), запросив этот URL:

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

Например, это дает вам всю информацию, относящуюся к учетной записи taylorswift:

https://www.instagram.com/taylorswift/?__a=1
person bchetioui    schedule 05.06.2017
comment
Ладно, придется пойти с этим. Получение идентификатора пользователя через отдельный запрос не является оптимальным, но, по крайней мере, использование этого URL-адреса не означает на один запрос меньше почасового лимита API. - person Emmanuel Figuerola; 06.06.2017
comment
из-за этого не может получить видео файлы. - person Saleh Mosleh; 27.11.2017

Я не смог найти в 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';
person Josan Iracheta    schedule 03.06.2017

вы можете найти идентификатор пользователя !!!

нравится :

<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

так я думаю лучше. вы также можете отправить json с помощью php.

person Omid reza    schedule 26.05.2017
comment
Не думаю, что вы поняли. Мне не нужен мой идентификатор пользователя, мне нужен чужой идентификатор пользователя, и единственные данные, которые у меня есть, - это имя пользователя учетной записи этого человека. Кроме того, я делаю это на стороне сервера (PHP), без JavaScript. - person Emmanuel Figuerola; 26.05.2017