私はいくつかの調査を行っており、Instagram APIから取得されている20を超える画像を表示する方法を理解しようとしています。私はこれでかなり新しいですので、どんな助けでもいただければ幸いです!回避策があるかどうかを確認しようとしていますか?おそらく役立つ可能性のあるページ分割の追加について何かを見ました。もしそうなら、それを行う方法についてのケースの詳細も素晴らしいでしょう!
ここに私がこれまでに持っているコードがあります。
<script type="text/javascript">
$.ajax({
type: "GET",
dataType: "jsonp",
cache: false,
url: "https://api.instagram.com/v1/tags/coffee/media/recent?client_id=[]&access_token=[]",
success: function(data) {
for (var i = 0; i < 20; i++) {
$(".instagram").append("<a class='big-square span2' target='_blank' href='" + data.data[i].link +"'><img src='" + data.data[i].images.low_resolution.url +"'></img></a>");
}
}
});
</script>
InstagramのAPIには20画像の制限があります。このスレッドと私の答えをチェックしてください:
編集:また、 [〜#〜] this [〜#〜]
2015年11月17日より前に作成されたアプリは2016年6月まで機能し続けます。2016年6月以降、アプリは、審査プロセスで承認されなかった場合、自動的にサンドボックスモードに移行します。
サンドボックスモードは実際のInstagramデータ(つまり、Instagramアプリで通常表示されるもの)ですが、次の条件があります。
このコードを試してください
$api = "https://api.instagram.com/v1/tags/snow/media/recent?client_id=".$client;
function get_curl($url) {
if(function_exists('curl_init')) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$output = curl_exec($ch);
echo curl_error($ch);
curl_close($ch);
return $output;
} else{
return file_get_contents($url);
}
}
while ($api !== NULL) {
$response = get_curl($api);
foreach(json_decode($response)->data as $item){
$src = $item->images->standard_resolution->url;
$thumb = $item->images->thumbnail->url;
$url = $item->link;
$images[] = array(
"src" => htmlspecialchars($src),
"thumb" => htmlspecialchars($thumb),
"url" => htmlspecialchars($url)
);
echo "<a href='".$src."'><img src='".$thumb."' width='150' height='150' border='0'></a> ";
}
$api = json_decode($response)->pagination->next_url;
}
&count=N
をリクエストに追加してみてください。Nは必要な結果の数です。
count
パラメーターを指定して、必要な数に設定することにより、20を超えるアイテムを取得できます。
ただし、Instagramでは、すべてのリクエストに対して文書化されていない33の制限も課されているため、33を超える場合はページ番号を付ける必要があります。
しかし、私は Instafetch と書いて、ページ付けに役立ちます。タグでメディアをフィルタリングすることもできます。気軽にご利用ください!
http://instagram.com/developer/endpoints/ を参照してください。エンドポイントのジェネリックについて詳しく説明し、ページネーション属性もリストします。つまり、「ページ分割」応答には、次の結果セットを取得するために使用できるnext_url
が含まれます。その後、すべての次のURLを取得すると(結果に含まれている限り)、完全なセットが得られます。
ところで、リクエストのcount
パラメータを増やすことができます。 (使用しているInstagramライブラリによっては、そのようなものはoptions
ハッシュまたは類似のものを介して提供できます。)これにより、いくつかの余分なリクエストを節約できる場合があります。今言ったページは最大カウント値を指定していません。 Instagramが最大値を動的に、エンドポイントごとに変更しているのではないかと思います。
20件を超える投稿を取得することはできません。サンドボックスユーザーの場合は、「API動作」をお読みください こちら
<script>
var token = 'your_token',
userid = your_id,
num_photos = 12;
$.ajax({
url: 'https://api.instagram.com/v1/users/'+userid+'/media/recent',
dataType: 'jsonp',
type: 'GET',
data: {access_token: token, count: num_photos},
success: function(data){
console.log(data);
},
error: function(data){
}
});
</script>
https://rudrastyh.com/javascript/get-photos-from-instagram.html
実際には、次の20枚の写真を取得するチャンスがあります。その後、次の20枚というように続きます。JSONレスポンスには、「ページネーション "配列:
"pagination":{
"next_max_tag_id":"1411892342253728",
"deprecation_warning":"next_max_id and min_id are deprecated for this endpoint; use min_tag_id and max_tag_id instead",
"next_max_id":"1411892342253728",
"next_min_id":"1414849145899763",
"min_tag_id":"1414849145899763",
"next_url":"https:\/\/api.instagram.com\/v1\/tags\/lemonbarclub\/media\/recent?client_id=xxxxxxxxxxxxxxxxxx\u0026max_tag_id=1411892342253728"
}
これは特定のAPI呼び出しに関する情報であり、オブジェクト "next_url"は次の20枚の写真を取得するためのURLを表示するので、そのURLを取得して呼び出します次の20枚...
instagram APIの詳細については、こちらをご覧ください: https://medium.com/@KevinMcAlear/getting-friendly-with-instagrams-api-abe3b929bc52
instafeed のようなInstagramフィードライブラリを使用できます。 60枚の画像のフィードを取得できます(最大)
例えば:
<script type="text/javascript">
var feed = new Instafeed({
get: 'tagged',
tagName: 'awesome',
limit: 20,
clientId: 'YOUR_CLIENT_ID'
});
feed.run();
</script>
limit(number)-追加する画像の最大数。最大60。