Instagram, jak uzyskać identyfikator użytkownika z nazwy użytkownika?


125

Jestem w trakcie osadzania mojego źródła obrazu w mojej witrynie internetowej za pomocą JSON, adres URL wymaga mojego identyfikatora użytkownika, aby móc pobrać ten kanał.

Więc gdzie mogę znaleźć / pobrać mój identyfikator użytkownika?


1
Znalazłem do tego nowe i szybsze narzędzie, patrz codeofaninja.com/tools/find-instagram-user-id
Emkey

Możesz być także zainteresowany znalezieniem nazwy użytkownika z identyfikatora użytkownika, na wypadek, gdyby ktoś często zmieniał nazwę użytkownika. Dodałem odpowiedź, która działa bez tokena dostępu: stackoverflow.com/a/60744028/1176454
baptx

Odpowiedzi:


236

Bardzo późna odpowiedź, ale myślę, że to najlepsza odpowiedź na ten temat. Mam nadzieję, że to jest przydatne.

Możesz uzyskać informacje o użytkowniku, gdy zostanie wysłane żądanie, korzystając z poniższego adresu URL:

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

Na przykład:

Ten adres URL zawiera wszystkie informacje o użytkowniku, którego nazwa użytkownika to therock

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

Aktualizacja i czerwiec-20-2019, API jest teraz publiczne. Nie jest wymagane uwierzytelnienie.

Aktualizacja w grudniu-11-2018, musiałem potwierdzić, że ten punkt końcowy nadal działa. Musisz się zalogować przed wysłaniem żądania do tej witryny, ponieważ nie jest to już publiczny punkt końcowy. Krok logowania jest również łatwy. To jest moje demo: https://youtu.be/ec5QhwM6fvc


Aktualizacja z kwietnia 17-2018, wygląda na to, że ten punkt końcowy nadal działa (ale nie jest już publiczny punkt końcowy), musisz wysłać żądanie z dodatkowymi informacjami do tego punktu końcowego. (Naciśnij klawisz F12, aby otworzyć pasek narzędzi programisty, a następnie kliknij kartę Sieć i prześledź żądanie).

Przepraszam, bo jestem zbyt zajęty. Mam nadzieję, że te informacje wam pomogą. Hmm, jeśli chcesz, możesz mi oddać głos przeciw.


Aktualizacja z 12 kwietnia 2018 r., Cameronjonesweb powiedział, że ten punkt końcowy już nie działa. Kiedy próbuje uzyskać dostęp do tego punktu końcowego, zwraca kod stanu 403.



1
Jak to znalazłeś?
nilfalse

6
Po otwarciu okien deweloperskich w przeglądarce i otwarciu karty Sieć można zobaczyć żądanie do tego adresu URL.
Thinh Vu

3
poszukaj identyfikatora właściciela.
Gulok

1
to jest niesamowite! niezłe znalezisko. miejmy nadzieję, że nie zostanie to ograniczone.
zadebiutował

2
Niestety to nie działa, jeśli nie masz określonego identyfikatora użytkownika, który znasz. Sposób, w jaki Instagram sprawdza, czy jest to prawidłowe żądanie, jest przez plik cookie przesłany w nagłówku. Jeśli user_id istnieje w pliku cookie proeprty, zostanie uznane za prawidłowe żądanie. Sprawdź właściwość pliku cookie w nagłówku żądania po przejściu do pokazanego adresu URL
Kiong,

39

Wprowadź ten adres URL w przeglądarce, podając nazwę użytkownika, którego chcesz znaleźć, i swój token dostępu

https://api.instagram.com/v1/users/search?q=[USERNAME]&access_token=[ACCESS TOKEN]

16
Niestety; to jest błąd :( Odkryliśmy, że jeśli siedzisz i odświeżasz ten adres URL, możesz losowo pobrać innych użytkowników, których nazwa użytkownika zaczyna się od wyszukiwanej nazwy użytkownika. Np. jeśli szukasz „fred1”, ale jest też „fred123 ", otrzymasz losowe wyniki! Zgłoszone na instagramie; oczekiwanie na odpowiedź :(
Danny Tuppeny

@frosty Uważam to za mało wiarygodne - miałeś lepsze wyniki?
sambecker

To nie działa, ponieważ potrzebujesz do tego uprawnienia „public_content”.
desloovere_j

@DannyTuppeny Czy kiedykolwiek usłyszałeś odpowiedź z Instagrama?
Kolejka

@Queue Nic przydatnego, tylko śmieci. W końcu zrezygnowaliśmy, a ponieważ ich zmiany w czerwcu, które i tak całkowicie zepsuły naszą integrację, po prostu całkowicie je wyrywamy z naszej aplikacji.
Danny Tuppeny

18

Większość metod jest przestarzała od czerwca 1/2016 zmian w API

Poniżej pracował dla mnie,

  • dostęp do Instagrama w przeglądarce, na przykład chrome, safari lub firefox.
  • Uruchom narzędzia programistyczne, przejdź do opcji konsoli.
  • w wierszu polecenia wprowadź poniższe polecenie i naciśnij enter:

    window._sharedData.entry_data.ProfilePage[0].user.id
    

Jeśli masz szczęście, otrzymasz za pierwszym razem, jeśli nie, uzbrój się w cierpliwość, odśwież stronę i spróbuj ponownie. kontynuuj, aż zobaczysz identyfikator użytkownika. Powodzenia!!



18

Łatwo uzyskaj identyfikator użytkownika i dane użytkownika

https://api.instagram.com/v1/users/search?q= [ NAZWA UŻYTKOWNIKA] & client_id = [ID klienta TWOJEJ APLIKACJI]

Na przykład:

https://api.instagram.com/v1/users/search?q=zeeshanakhter2009&client_id=enter_your_id

Wynik:

{"meta": {"code": 200}, "data": [{"username": "zeeshanakhter2009", "bio": "http://about.me/zeeshanakhter", "website": "http: //zeeshanakhter.com","profile_picture":"http://images.ak.instagram.com/profiles/profile_202090411_75sq_1377878261.jpg","full_name":"Zeeshan Akhter "," id ":" 202090411 "}]}


1
Najprostszy sposób. Nie ma potrzeby posiadania tokena dostępu! Uwielbiam to :)
Can Vural

1
piszę też pomocny temat na ten temat w java, który możesz zobaczyć w szczegółach najnowszy-tutorial.com/2014/01/27/get-instagram-media-comments
Zeeshan Akhter

6
Niestety; to jest błąd :( Odkryliśmy, że jeśli siedzisz i odświeżasz ten adres URL, możesz losowo pobrać innych użytkowników, których nazwa użytkownika zaczyna się od wyszukiwanej nazwy użytkownika. Np. jeśli szukasz „fred1”, ale jest też „fred123 ", otrzymasz losowe wyniki! Zgłoszone na instagramie; oczekiwanie na odpowiedź :(
Danny Tuppeny

1
Zgadzam się z Dannym, ta metoda nie zawsze działa.
około

2
Nie działa, ponieważ Instagram usunął całą obsługę client_id od 1 czerwca 2016 r.
Malcolm Box,

14

Zamiast korzystać z API, można sprawdzić stronę użytkownika Instagrama, aby uzyskać identyfikator. Przykładowy kod w PHP:

$html = file_get_contents("http://instagram.com/<username>");
$doc = new DOMDocument();
$doc->loadHTML($html);

$xpath = new DOMXPath($doc);
$js = $xpath->query('//body/script[@type="text/javascript"]')->item(1)->nodeValue;

$start = strpos($js, '{');
$end = strrpos($js, ';');
$json = substr($js, $start, $end - $start);

$data = json_decode($json, true);
$data = $data["entry_data"]["UserProfile"][0];
# The "userMedia" entry of $data now has the same structure as the "data" field
# in Instagram API responses to user endpoints queries

echo $data["user"]["id"];

Oczywiście ten kod należy dostosować, jeśli Instagram zmieni format strony.


4
Wydaje się, że to zły pomysł, aby nie używać API
472084,

2
Jak wspomina odpowiedź Thinh Vu, możesz dodać, ?__a=1aby uzyskać tylko JSON w window._sharedDataobiekcie, dzięki czemu możesz zrobić coś podobnego curl https://www.instagram.com/username/?__a=1|jq -r .user.id.
nisetama

7

Obecnie nie ma bezpośredniego interfejsu API Instagrama do pobierania identyfikatora użytkownika z nazwy użytkownika. Musisz wywołać GET / users / search API, a następnie powtórzyć wyniki i sprawdzić, czy usernamewartość pola jest równa twojej nazwie użytkownika, czy nie, a następnie pobierasz plik id.


6

Napisałem to narzędzie do pobierania identyfikatorów Instagrama według nazwy użytkownika: Wyszukiwanie identyfikatorów użytkownika na Instagramie .

Wykorzystuje bibliotekę python-instagram, aby uzyskać dostęp do API i zawiera link do kodu źródłowego (napisanego w Django), który ilustruje różne implementacje API Instagrama.

Aktualizacja : Dodano kod źródłowy portu do Ruby on Rails .


4
Narzędzie do pobierania identyfikatorów Instagrama za pomocą linku do nazwy użytkownika nie działa. Zaktualizuj go.
Nishant Nawarkhede

@JaydeepJadav nawet nie tak bardzo jak „proszę”? Kod źródłowy znajduje się w GitHub - zapraszamy do otwarcia żądania ściągnięcia.
zeantsoi

5

Wypróbowałem wszystkie powyższe rozwiązania i żadne nie działa. Myślę, że Instagram przyspieszył ich zmiany. Spróbowałem jednak metody konsoli przeglądarki i trochę się pobawiłem i znalazłem to polecenie, które dało mi identyfikator użytkownika.

window._sharedData.entry_data.ProfilePage[0].graphql.user.id

Po prostu odwiedzasz stronę profilu i wpisujesz to polecenie w konsoli. Aby to zadziałało, może być konieczne odświeżenie strony. (Musiałem opublikować to jako odpowiedź z powodu mojej niskiej reputacji)


5

Działające rozwiązanie bez tokena dostępu na dzień 14 października 2018 r .:

Wyszukaj nazwę użytkownika:

https://www.instagram.com/web/search/topsearch/?query=<username>

Przykład:

https://www.instagram.com/web/search/topsearch/?query=therock

To jest zapytanie wyszukiwania. Znajdź dokładnie pasujący wpis w odpowiedzi i uzyskaj identyfikator użytkownika z wpisu.


krótka i najlepsza odpowiedź, ale jeśli nie znaleziono nazwy użytkownika, pokaże powiązane wyniki.
sanjeet bisht

4

Musisz użyć, Instagrams APIaby przekonwertować plik usernamena id.

Jeśli dobrze pamiętam, możesz użyć, users/searchaby znaleźć nazwę użytkownika i pobrać stamtąd identyfikator


Czy możesz mi powiedzieć metodę, która to robi!?
Muhammad Reda

robi co? wyszukiwanie odbywa się za pomocą żądania API users/search, a następnie dostajesz idi używasz go w czymkolwiek chcesz
mlishn

4
Niestety; to jest błąd :( Odkryliśmy, że jeśli siedzisz i odświeżasz ten adres URL, możesz losowo pobrać innych użytkowników, których nazwa użytkownika zaczyna się od wyszukiwanej nazwy użytkownika. Np. jeśli szukasz „fred1”, ale jest też „fred123 ", otrzymasz losowe wyniki! Zgłoszone na instagramie; oczekiwanie na odpowiedź :(
Danny Tuppeny

zamień nazwę użytkownika na rzeczywistą nazwę użytkownika w poniższym linku api.instagram.com/v1/users/…
Chhatrapati Sharma

3

aby uzyskać swój identyfikator, wyślij uwierzytelnione żądanie do users/self/feedpunktu końcowego interfejsu API Instagrama . odpowiedź będzie zawierała między innymi nazwę użytkownika oraz identyfikator użytkownika.



2

Przejdź do konsoli API i skopiuj link https://api.instagram.com/v1/users/self w polu tekstowym i uwierzytelnij się za pomocą swojego identyfikatora Instagram i hasła, otrzymasz w odpowiedzi swój identyfikator


2

Można to zrobić poprzez dostęp do API Instagrama apigee.com tutaj, na stronie programistów Instagrama. Po zalogowaniu się kliknij wywołanie API „/ users / search”. Stamtąd możesz przeszukać dowolną nazwę użytkownika i odzyskać jej identyfikator.

{
"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"
}]}


Jeśli masz już kod dostępu, możesz to również zrobić w ten sposób: https://api.instagram.com/v1/users/search?q=USERNAME&access_token=ACCESS_TOKEN


3
Niestety; używanie użytkowników / wyszukiwania jest błędne :( Odkryliśmy, że jeśli siedzisz i odświeżasz ten adres URL, możesz losowo pozyskać innych użytkowników, których nazwa użytkownika zaczyna się od wyszukiwanej nazwy użytkownika. Np. jeśli szukasz „fred1”, ale jest także „fred123”, otrzymasz losowe wyniki! Zgłoszone na instagramie; oczekiwanie na odpowiedź :(
Danny Tuppeny

2
To nie wada - w rzeczywistości jest to funkcjonalność. Jest to interfejs wyszukiwania , co oznacza, że ​​działa jak pole wyszukiwania w aplikacji Instagram. Właściwym sposobem pobrania identyfikatora użytkownika dla nazwy użytkownika jest wysłanie zapytania do tego punktu końcowego wyszukiwania, a następnie iteracja po zwróconych obiektach i sprawdzenie, czy nazwa użytkownika jest dokładnie zgodna.
John Dorian

1
Upvoted zarówno ale jak deweloperzy API możemy Zaakceptuj, aby utworzyć punkt końcowy odnośnika użytkownik tego uniknąć, oferując tylko przeszukiwanie jest naprawdę irytujące
sricks


2

Chociaż to nie jest wymieniony na stronie API doc już znalazłem wątku , który wspomina, że można użyć selfzamiast user-iddo users/{user-id}punktu końcowego i będzie to powrót informacje o aktualnie uwierzytelnionego użytkownika.

Tak więc users/selfjest tym samym, co jawne wywołanie users/{some-user-id}i zawiera identyfikator użytkownika jako część ładunku. Po uwierzytelnieniu po prostu zadzwoń do, users/selfa wynik będzie zawierał identyfikator aktualnie uwierzytelnionego użytkownika, na przykład:

{
    "data": {
        "id": "1574083",
        "username": "snoopdogg",
        "full_name": "Snoop Dogg",
        "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1574083_75sq_1295469061.jpg",
        "bio": "This is my bio",
        "website": "http://snoopdogg.com",
        "counts": {
            "media": 1320,
            "follows": 420,
            "followed_by": 3410
        }
}

2

Jeśli używasz niejawnego uwierzytelniania, musi wystąpić problem z brakiem możliwości znalezienia pliku user_id

Znalazłem sposób na przykład:

Access Token = 1506417331.18b98f6.8a00c0d293624ded801d5c723a25d3ec the User id is 1506417331

zrobiłbyś split singiel rozdzielony przez. obtenies do tokena dostępu i pierwszego elementu


2

Myślę, że najlepszą, najprostszą i najbezpieczniejszą metodą jest otwarcie profilu na Instagramie w przeglądarce, wyświetlenie kodu źródłowego i wyszukanie zmiennej użytkownika (ctrl + f "user": {" ) w głównym kodzie javascript. Numer identyfikacyjny w zmiennej użytkownika powinien być twoim identyfikatorem.

Oto kod jak wyglądał w momencie pisania tej odpowiedzi (może i prawdopodobnie zostanie w przyszłości zmieniony):

"user":{"username":"...","profile_picture":"...","id":"..........","full_name":"..."}},

2

Oto jak możesz odzyskać swój identyfikator użytkownika z nazwy użytkownika:

$url = "https://api.instagram.com/v1/users/search?q=[username]&access_token=[your_token]";
$obj = json_decode(@file_get_contents($url));
echo $obj->data[0]->id;

2

Możesz to zrobić za pomocą interfejsu API Instagrama ( punkty końcowe użytkownika: / users / search)

instrukcje w php:

function Request($url) {

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
    curl_setopt($ch, CURLOPT_HEADER, 0);  

    $result = curl_exec($ch);

    curl_close($ch);

    return $result;

}

function GetUserID($username, $access_token) {

    $url = "https://api.instagram.com/v1/users/search?q=" . $username . "&access_token=" . $access_token;

    if($result = json_decode(Request($url), true)) {

        return $result['data'][0]['id'];

    }

}

// example:
echo GetUserID('rathienth', $access_token);

3
Niestety; używanie użytkowników / wyszukiwania jest błędne :( Odkryliśmy, że jeśli siedzisz i odświeżasz ten adres URL, możesz losowo pozyskać innych użytkowników, których nazwa użytkownika zaczyna się od wyszukiwanej nazwy użytkownika. Np. jeśli szukasz „fred1”, ale jest także „fred123”, otrzymasz losowe wyniki! Zgłoszone na instagramie; oczekiwanie na odpowiedź :(
Danny Tuppeny

2

Oto naprawdę łatwa witryna, która dobrze mi pasuje:

http://www.instaid.co.uk/

Lub możesz wykonać następujące czynności, zastępując `` nazwę użytkownika '' swoją nazwą użytkownika na Instagramie

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

Możesz też zalogować się na swoje konto na Instagramie i skorzystać z narzędzi deweloperskich Google i przejrzeć zapisane pliki cookie. „ds_user_id” to Twój identyfikator użytkownika

wprowadź opis obrazu tutaj


Chociaż ten link może odpowiedzieć na pytanie, lepiej jest zawrzeć tutaj zasadnicze części odpowiedzi i podać link do odniesienia. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie. - Z recenzji
Bugs

@Bugi Dodałem bardziej szczegółową odpowiedź. Po prostu próbuję wnieść swój wkład do społeczności stackoverflow.
BenEgan1991

1
https://api.instagram.com/v1/users/search?q="[USERNAME]"&access_token=[ACCESS TOKEN]

Proszę zwrócić uwagę na cudzysłowy.

To nie zawsze zwraca prawidłowy wynik, ale częściej niż niecytowany:

https://api.instagram.com/v1/users/search?q="self"&count=1&access_token=[ACCESS TOKEN] 

zwraca użytkownika „self” (id: 311176867)

https://api.instagram.com/v1/users/search?q=self&count=1&access_token=[ACCESS TOKEN]

zwraca użytkownika „super_selfie” (id: 1422944651)


1

Działające rozwiązanie ~ 2018

Odkryłem, że mając token dostępu, możesz wykonać następujące żądanie w przeglądarce:

https://api.instagram.com/v1/users/self?access_token=[VALUE]

W rzeczywistości token dostępu zawiera identyfikator użytkownika (pierwszy segment tokena):

<user-id>.1677aaa.aaa042540a2345d29d11110545e2499

Możesz uzyskać token dostępu, korzystając z tego narzędzia dostarczonego przez Pixel Union .


0

Najpierw utwórz aplikację na Instagramie i uzyskaj identyfikator klienta dla swojej aplikacji

http://instagram.com/developer/

Teraz po prostu skopiuj i wklej następujący adres URL do okna przeglądarki, zastępując swoją nazwę użytkownika i identyfikator klienta https://api.instagram.com/v1/users/search?q=[Twoja-nazwa-wybierz&client_id=[Twój-Klient-Id]

otrzymasz wynik Json zawierający ogólne informacje o Twoim koncie wraz z numerycznym identyfikatorem użytkownika

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.