1. ホーム
  2. instagram-api

[解決済み] ユーザー認証を行わずに、Instagramからユーザーのメディアを取得するにはどうすればよいですか?

2022-04-21 07:28:23

質問

ユーザーの最近のInstagramのメディアをサイドバーに表示しようとしています。Instagram APIを使用してメディアを取得しようとしています。

http://instagram.com/developer/endpoints/users/

ドキュメントによると、GET https://api.instagram.com/v1/users/<user-id>/media/recent/ しかし、OAuthアクセストークンを渡すように書かれています。アクセストークンは、ユーザーの代理で行動するための権限を表します。私は、サイドバーにこれを表示するために、ユーザーにInstagramにログインして欲しくありません。Instagramのアカウントを持っている必要さえないはずです。

例えば http://instagram.com/thebrainscoop Instagramにログインしていない状態で、写真を見ることができます。それをAPIで行いたい。

Instagram APIでは、ユーザーを認証しないリクエストには client_id の代わりに access_token . それを試すと、出るんですけどね。

{
  "meta":{
    "error_type":"OAuthParameterException",
    "code":400,
    "error_message":"\"access_token\" URL parameter missing. This OAuth request requires an \"access_token\" URL parameter."
  }
}

では、これは不可能なのでしょうか?まずOAuthを通してユーザーにInstagramアカウントへのログインを求めずに、ユーザーの最新(公開)メディアをフェッチする方法はないのでしょうか?

解決方法は?

遅くなりましたが、Instagramのドキュメントに記載がなかったので、どなたかのお役に立てれば幸いです。

に対してGETを実行するには https://api.instagram.com/v1/users/<user-id>/media/recent/ (執筆時点では)OAuthアクセストークンは必要ありません。

を実行することができます。 https://api.instagram.com/v1/users/[USER ID]/media/recent/?client_id=[CLIENT ID]

[CLIENT ID]は、manage clientsを通じてアプリに登録された有効なクライアントIDになります(ユーザーとは一切関係ありません)。 ユーザー名から[USER ID]を取得するには、GET users search requestを実行します。 https://api.instagram.com/v1/users/search?q=[USERNAME]&client_id=[CLIENT ID]