メディアに150を超えるコメントがある場合でも、特定の Instagram メディアのすべてのコメントを表示できるようにしたいと思います。現在のところ、Instagramサイトのメディアに関する最新の20以上のコメントを表示することは不可能と思われます。 Instagram API Console または Instagram API Libraries 、最新の150件のコメントが返されます。ページネーションや追加コメントの表示オプションはありません。
もちろん、最初に、提供されているコンソールと自分の環境の両方で、文書化された メディアコメントクエリ を試しました。どちらの場合も、最大150件のコメントが返されました。困惑して、私はより多くの情報をオンラインで探し始めました。
Instagram APIドキュメント を十分に読み、 Instagram APIコンソール でさまざまなエンドポイントをテストし、Instagramタグで Instagram API Googleグループ Instagramのいくつかのトピックに関する質問です。文書化されていないものが試される可能性があるのではないかと考えました。
ユーザーの最近のメディアエンドポイント ドキュメントには、max_id
およびmax_timestamp
のパラメーターが含まれています。これにより、上記のmax_id
またはmax_timestamp
。各コメントにはcreated_time
およびid
属性が付属しているため、さまざまなコメントIDに対してmax_id
およびmax_timestamp
のパラメーターを追加しようとしました。コメントをページングしようとするタイムスタンプ。私の試みはどれもうまくいきませんでした。
誰か別の提案がない限り、私は今停滞しています。
Instagram API Console を使用して、 this photo のすべてのコメントを取得するために、次の手順を実行しました。
OAuth2
トークンに対して自分自身を認証しましたcoltonlhaynes
のユーザー検索クエリを実行して、ユーザーid: 9610843
を取得します9610843
最新メディアを取得しますid: 698057751201132903_9610843
count: 1375
698057751201132903_9610843
最新のコメントを取得しますcreated time: 1397460230
id: 698269477955776593
698057751201132903_9610843
以下の追加クエリパラメータ文字列を使用して、コメントをページングしようとしましたが、ステップ#6 と同じ結果を受け取りました。?max_timestamp=1397460230
?max_id=698269477955776593
?max_timestamp=1397460230&max_id=698269477955776593
?max_id=698269477955776593&max_timestamp=1397460230
私の知る限り、この問題の解決策はありませんが、Instagram開発チーム 述べている 彼らはもはやGoogleグループを監視せず、代わりにStackOverflowを監視するので、私はこれをここに置きます。
わかりました、これは非常に「ハッキング」なソリューションになるでしょう、そして私は現在(自宅にADSLがないため)これを自分で行うように設定されていませんが、この問題にどのようにアプローチするかについてステップバイステップのガイドを提供できます。
まず、 "Charles Web Debuging Proxy" というツールが必要になります
チャールズで「SSLデバッグ」を有効にする方法に関するチュートリアルがサイトにあります(モバイルデバイスに新しい「ルート証明書」をインストールし、チャールズによって署名されたhttpsトランザクションが実際に署名されていると思わせるにはinstagram.comによる)
ここで、すべてのリクエストを上記のプロキシ(ローカルwi-fiネットワークにインストールする必要があります)を経由するようにモバイルデバイスを設定します。
https://www.google.com に移動し、charlesがリクエストとレスポンスの両方を記録していることを確認します。
これがすべて正しくセットアップされると、instagramアプリ自体がコメントページを生成するために使用するAPI呼び出しを確認できます。
ここでの一般的な答えは、「no、それは通常のエンドポイントでは不可能です」です。
Instagramが更新されました Rate Limits (後2015年11月17日)。 Instagramプラットフォームのすべてのレート制限は、アクセストークンごとに個別に、1時間のスライド式ウィンドウで制御されます。ライブアプリには、サンドボックスモードのアプリよりも高いレート制限があります。
グローバルコンテキストにおける次の制限を示すもの:
グローバルレート制限
グローバルレート制限は、特定のエンドポイントに関係なく、1時間のスライディングウィンドウでアクセストークンごとにアプリによって行われるすべてのAPI呼び出しを含めて適用されます。レート制限は、無効または不正なリクエストにも適用されます。
- サンドボックスレート制限:500 /時間
- ライブレート制限:5000 /時間
さらに、コメントエンドポイントの個別の制限:
エンドポイント固有のレート制限
公開に使用されるエンドポイント(POSTまたはDELETE)には、エンドポイントごとに適用されるレート制限があります。 OAuthクライアントによってこれらのエンドポイントに対して行われた呼び出しも、上記のグローバルレート制限にカウントされます。
- サンドボックス/ media/media-id /comments:30 /時間
- Live/ media/media-id /comments:60 /時間
アプリがこれらのレート制限のいずれかを超えた場合、429 (Too Many Requests)
のHTTP応答コードで応答を受け取ります。
Instagramプラットフォームがaccess token
基礎として、複数のアクセストークンを使用したマルチスレッドを使用すると、より大きな制限を達成できます。ただし、注意点があります。1。コンテキストが異なるため、すべてが複数のアクセストークンから並列化できるわけではありません。 2. プラットフォームポリシー および [〜#〜] tos [〜#〜] と矛盾する場合があります
これはまったく「ハック」ではありません。
Instagramは、ここですべてのコメントを受け取ることができるリンクを提供しているため、 https://instagram.com/developer/endpoints/comments/
あなたがしなければならないのは、Instagramがあなたに与えているリンクをループすることです。私はこのようにしました。この方法でApiを使用しています。
public function getUserMediaComments($id, $limit = 0) {
return $this->_makeCall('media/'.$id.'/comments', true, array('count' => $limit));
}
$ idは画像のmedia_idです。ピクチャIDを使用してその関数をforeachする場合、すべてのコメントを受け取ります。
この方法を知ったとき、それほど難しくはありませんでした。
それをforeachingしながら、このようにすることもできます。 :
$comments = json_decode(file_get_contents('https://api.instagram.com/v1/' . 'media/'. $image->id . '/comments?access_token='. $data->access_token));
両方とも、画像のコメントの配列を返します。