2009-09-19 12 views
5

Buduję małą aplikację Stack Overflow, ale aby zebrać informacje z Stack Overflow o użytkowniku, muszę znać jego identyfikator użytkownika. Chciałbym, aby użytkownik mógł wprowadzić swoją wyświetlaną nazwę/nazwę użytkownika, a dla aplikacji, aby znaleźć ich ID użytkownika. Rozumiem jednak, że nazwy użytkownika nie są unikalne, ale czy można znaleźć, poprzez C#, wszystkie identyfikatory użytkowników o nazwie użytkownika, którą podaję? Czy możesz podać mi przykładowy kod? Prawdopodobnie można to zrobić w jakiś sposób poprzez zeskanowanie ekranu strony użytkowników, ale nie jestem pewien, jak to zrobić.Znajdowanie identyfikatora użytkownika użytkownika przepełnienia stosu z wyświetlaną nazwą w języku C#?

Nawiasem mówiąc, nie chcę korzystać z pliku danych, aby to osiągnąć. Chciałbym jakoś znaleźć te informacje za pośrednictwem strony Użytkownicy lub czegoś podobnego.

Przy okazji opublikowałem similar question on Meta Stack Overflow i zostałem przekierowany, aby opublikować to tutaj, ponieważ Stack Overflow jest tam, gdzie należy!

+2

miałem zaproponować pomocą zrzutu danych, ale powiedziałaś, że nie chcesz korzystać z jakiegoś nieokreślonego powodu. Jeśli przeskanujesz screen wszystkich użytkowników w Stack Overflow, * zostanie * zbanowany. –

+0

@Greg I będzie? Hmm ... nie chcę przeskanować wszystkich użytkowników, wystarczy, że przejdę na stronę Użytkownicy, która mówi, którzy użytkownicy istnieją (główna strona użytkowników, a nie poszczególne strony profilu). Wydaje się to niemożliwe. –

Odpowiedz

7

Numer previous version tej odpowiedzi już nie działa. Można go zmodyfikować tak, aby działał ponownie, ale teraz nie jest już konieczne –, obecnie jest official API. Parametr inname do the /users method jest tym, czego szukasz.

Przykład: http://api.stackexchange.com/2.2/users?order=desc&sort=reputation&inname=steve&site=stackoverflow

+0

Dziękujemy! To naprawdę pomogło! A tak przy okazji, jak to znalazłeś? –

+0

Wow, dziękuję bardzo! –

+0

To nie działa. Może to się zmieniło w międzyczasie? –

2

Musisz przeszukać wszystkich użytkowników (https://stackoverflow.com/users/( 0 do bieżącego) /), aby odpowiedzieć na to pytanie.

+0

Próbowałem dowiedzieć się, czy identyfikatory użytkowników są sekwencyjne, a ta odpowiedź sugerowałaby, że są sekwencyjne. – the0ther

3

Nienawidzę tego mówić, ale możesz poprosić o identyfikator użytkownika.

Problem nie polega na tym, że jest wielu użytkowników z potencjalnymi duplikatami, ponieważ gdyby tak było, moglibyśmy tylko buforować odnośniki. Problem polega na tym, że każdy użytkownik może zmienić swoją nazwę wyświetlaną w dowolnym momencie, więc nie możesz naprawdę zaufać pamięci podręcznej.

Jedną z rzeczy, które możesz zrobić, to zbudować usługę internetową z najnowszego zrzutu społeczności, zachować ją na bieżąco i po prostu poinformować użytkowników, że jeśli zmienią nazwę użytkownika, będą musieli poczekać na następny miesiąc. wydanie danych, aby nowa nazwa zadziałała.

+0

Dziękujemy! Zastanawiam się, jak zmienić swój identyfikator użytkownika? Czy wiąże się to z powiązaniem nowego OpenID z Twoim kontem? Zrobiłem to dzisiaj, więc sprawdzę, czy mój identyfikator się zmienił. –

+0

Zgaduję, że jest generowany losowo, gdy twoje konto SO jest tworzone w bazie danych. zmiana openid nie zmieni go, ponieważ jeden użytkownik może mieć wiele otwartych identyfikatorów. Musisz utworzyć nowe konto użytkownika, aby uzyskać inny identyfikator: – TJB

+0

@TJB tak, to jest to, co myślę, z tym wyjątkiem, że nie jest przypadkowe, identyfikatory są rosnącymi numerami pod względem tego, kto rejestruje jako pierwszy. Jeff ma id # 1. Inni członkowie zespołu mają cyfry ids. Jest uporządkowany według czasu! Osoby, które rejestrują rudy, tym wyższy identyfikator, który jest do ciebie przypisany, będzie! –