[instagram] 사용자 인증없이 Instagram에서 사용자 미디어를 얻으려면 어떻게해야합니까?

사용자의 최근 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 로 이동하여 사진을 볼 수 있습니다. 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의 문서에서 보지 못해서 누군가를 돕는다면 늦었지만 가치가 있습니다.

https://api.instagram.com/v1/users/<user-id>/media/recent/(현재 쓰는 시점에) GET을 수행하려면 실제로 OAuth 액세스 토큰이 필요하지 않습니다.

수행 할 수 있습니다 https://api.instagram.com/v1/users/[USER ID]/media/recent/?client_id=[CLIENT ID]

[CLIENT ID]는 클라이언트 관리 (사용자와 무관)를 통해 앱에 등록 된 유효한 클라이언트 ID입니다. GET 사용자 검색 요청을 수행하여 username에서 [USER ID]를 얻을 수 있습니다.
https://api.instagram.com/v1/users/search?q=[USERNAME]&client_id=[CLIENT ID]


답변

var name = "smena8m";
$.get("https://images"+~~(Math.random()*3333)+"-focus-opensocial.googleusercontent.com/gadgets/proxy?container=none&url=https://www.instagram.com/" + name + "/", function(html) {
if (html) {
    var regex = /_sharedData = ({.*);<\/script>/m,
        json = JSON.parse(regex.exec(html)[1]),
        edges = json.entry_data.ProfilePage[0].graphql.user.edge_owner_to_timeline_media.edges;

      $.each(edges, function(n, edge) {
          var node = edge.node;
          $('body').append(
              $('<a/>', {
              href: 'https://instagr.am/p/'+node.shortcode,
              target: '_blank'
          }).css({
              backgroundImage: 'url(' + node.thumbnail_src + ')'
          }));
      });
    }
});
html, body {
  font-size: 0;
  line-height: 0;
}

a {
  display: inline-block;
  width: 25%;
  height: 0;
  padding-bottom: 25%;
  background: #eee 50% 50% no-repeat;
  background-size: cover;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

이와 같은?__a=1 방문 페이지 주소 옆을 사용하여 Instagram 사용자 사진 피드를 JSON 형식으로 다운로드 할 수 있습니다 . 사용자 ID를 얻거나 앱을 등록 할 필요가 없으며 토큰이나 oAuth가 없습니다.

min_idmax_id변수 매김에 사용될 수 있으며, 여기에서

YQL잠긴 iframe 내부에서 작동하지 않을 수 있으므로 YQL 콘솔 에서 언제든지 수동으로 확인할 수 있습니다

2018 년 4 월 업데이트 : 최신 인스 타 그램 업데이트 후 서명 된 요청에 대한 사용자 정의 헤더를 CORS Access-Control-Allow-Headers제한 으로 인해 자바 스크립트로 설정할 수 없으므로 클라이언트 측 (자바 스크립트) 에서이 작업을 수행 할 수 없습니다 . 가능성은 여전히 통해이를 수행하는 php적절한 서명에 기초하여 또는 다른 서버 측에있어서 rhx_gis, csrf_token요청 파라미터. 자세한 내용은 여기를 참조 하십시오 .

2019 년 1 월 업데이트 : YQL이 종료되었으므로 CORSInstagram 페이지의 프록시로 Google 이미지 프록시를 사용한 최신 업데이트를 확인 하십시오! 그런 다음 부정적인 순간 만-이 방법으로는 페이지 매김을 사용할 수 없습니다.

PHP 해결책:

    $html = file_get_contents('https://instagram.com/apple/');
    preg_match('/_sharedData = ({.*);<\/script>/', $html, $matches);
    $profile_data = json_decode($matches[1])->entry_data->ProfilePage[0]->graphql->user;


답변

11.11.2017
Instagram 이이 데이터를 제공하는 방식을 변경했기 때문에 현재는 위의 방법 중 어느 것도 작동하지 않습니다. 사용자 미디어를 얻는 새로운 방법은 다음과 같습니다.
GET 위치 https://instagram.com/graphql/query/?query_id=17888483320059182&variables={"id":"1951415043","first":20,"after":null}
:
query_id-영구 가치 : 17888483320059182 (향후 변경 될 수 있음).
id-사용자의 ID 사용자 목록과 함께 제공 될 수 있습니다. 사용자 목록을 얻으려면 다음 요청을 사용할 수 있습니다 GET https://www.instagram.com/web/search/topsearch/?context=blended&query=YOUR_QUERY
first.-가져올 항목 수.
after-해당 ID에서 항목을 가져 오려는 경우 마지막 항목의 ID입니다.


답변

인증없이 다음 API를 사용하여 사용자의 최신 미디어를 얻을 수있었습니다 (설명, 좋아요, 댓글 수 포함).

https://www.instagram.com/apple/?__a=1

예 :

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


답변

지난 주에 Instagram은 /media/URL을 비활성화 했으며 해결 방법을 구현했으며 현재로서는 잘 작동합니다.

이 스레드에서 모든 사람의 문제를 해결하기 위해 다음과 같이 썼습니다 : https://github.com/whizzzkid/instagram-reverse-proxy

다음 엔드 포인트를 사용하여 인스 타 그램의 모든 공개 데이터를 제공합니다.

사용자 미디어 가져 오기 :

https://igapi.ga/<username>/media
e.g.: https://igapi.ga/whizzzkid/media

개수 제한이있는 사용자 미디어를 가져옵니다.

https://igapi.ga/<username>/media?count=N // 1 < N < 20
e.g.: https://igapi.ga/whizzzkid/media?count=5

JSONP를 사용하십시오.

https://igapi.ga/<username>/media?callback=foo
e.g.: https://igapi.ga/whizzzkid/media?callback=bar

또한 프록시 API는 다음 페이지 및 이전 페이지 URL을 응답에 추가하므로 끝에서이를 계산할 필요가 없습니다.

당신이 그것을 좋아 바랍니다!

이것을 발견해 주신 @ 350D에게 감사합니다 🙂


답변

Instagram API는 사용자의 최신 미디어 엔드 포인트에 액세스하려면 OAuth를 통한 사용자 인증이 필요합니다. 현재 사용자를위한 모든 미디어를 얻는 다른 방법은 없습니다.


답변

단일 계정에서 사용하기 위해 액세스 토큰을 생성하는 방법을 찾고 있다면 https://coderwall.com/p/cfgneq를 시도 하십시오 .

인스 타 그램 API를 사용하여 특정 계정의 모든 최신 미디어를 가져 오는 방법이 필요했습니다.