所以我想使用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批准的,精确和直接的方式:
仅供参考:我正在使用PHP和cURL进行服务器端。
附注:如果我必须单独向API发出请求以将帐户用户名转换为用户ID,那只会浪费一个请求,每小时限制一次。只是一个观察,以防Instagram团队的任何成员碰巧看到这一点。
答案 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。