2012-08-15 8 views
26

diesen Link kann ich sehen, dass meine (tonylampada) id auf Github 218821 ist https://api.github.com/users/tonylampadaErhalten GitHub Benutzername von id

Wie kann ich das Gegenteil tun? Mit der Benutzer-ID = 218821, wie lautet der Benutzername?


aktualisieren

Answering nulltoken hier, weil es eine lange Geschichte ist und es wird nicht in einem Kommentar passen.

FreedomSponsors ist eine Django-Anwendung, die django-social-auth verwendet, um die Anmeldung mit Github (und anderen) zu ermöglichen. (Sie sollten es auschecken, BTW, siehe bitte about page im Blog :-) Django-social-auth hat eine Konfigurations-Flag, die es der Anwendung ermöglicht, den Github-Benutzernamen in der Datenbank zu speichern. Vor ein paar Tagen habe ich eine neue Version von FS mit aktivierter github-Anmeldung bereitgestellt, aber mit "storeGithubUsername" auf false gesetzt.

Einige Benutzer haben ihre GitHub-Konten registriert, und jetzt hat die Datenbank ihre GitHub-IDs, aber nicht ihre Benutzernamen.

Sie können in my profile sehen, dass ich Github als "verbundenes Konto" habe, aber es gibt keinen Link zu meiner Github-Seite.

Ich brauche es den Link Punkt zu machen https://github.com/tonylampada

Ich bin bereit, eine neue Version zu implementieren, dies behebt, indem Sie die „storeGithubUsername“ -Einstellung (das ist nicht, was es heißt, ich bin nur eine Vereinfachung hier) zu wahr. Aber ich möchte die Datenbank mit den bereits github-registrierten Benutzern patchen. Ich habe ihre GitHub-IDs, aber nicht ihre Github-Benutzernamen.

+0

Warum brauchen Sie das? – nulltoken

+0

Lange Geschichte ... aktualisiert die Frage. Bitte, kennen Sie die Antwort: o) –

+0

Also ich vermute, es gibt keine Möglichkeit, den Benutzernamen von der ID zu bekommen .. richtig? – Lipis

Antwort

30

Wir müssen dies mit der Situation umgehen zu Gitter tun, wo Ein Benutzer hat seinen Benutzernamen auf GitHub geändert und wir erhalten eine 404-Antwort, wenn er seinen alten Benutzernamen abfragt.

Hier ist ein undokumentierter Endpunkt, also verwenden Sie ihn als Ihre eigene Gefahr, aber es funktioniert jetzt.Verwenden Sie den Endpunkt: https://api.github.com/user/:id, wobei :id die ID des Benutzers ist.

Ähnliche Endpunkte existieren für Repos und Orgs, unter https://api.github.com/repositories/:id bzw. https://api.github.com/organizations/:id.

Beachten Sie, dass das neue repository redirects preview API nur Repositorys unterstützt, nicht umbenannte Benutzer oder Organisationen. Tatsächlich zeigt die HTTP 301-Weiterleitung tatsächlich auf https://api.github.com/repositories/:id, also besteht eine gute Chance, dass diese "ID" -Endpunkte tatsächlich bald offiziell werden.

+1

Danke! Ich habe getestet und es funktioniert. Ich habe dies aktualisiert, um die richtige Antwort zu sein. –

+2

Es funktioniert nicht mehr, zumindest funktioniert es nicht, wenn ich schreibe. – noun

+2

Es funktioniert hier zu der Zeit, als ich schreibe. – fiatjaf

8

Es gibt keine dokumentierte Funktion, noch undokumentierte, die ich kenne, die den Abruf des Benutzernamens aus der ID offen legen. Aus der Perspektive der GitHub API-Benutzer ist die Benutzer-ID ein "Implementierungsdetail". Der wahre Schlüssel ist der Benutzername.

Von dem, was ich verstehe, benötigen Sie nur eine Charge von Benutzernamen mit einer Liste von IDs. Und dies wäre eine einmalige Anfrage, keine dauerhafte Notwendigkeit.

Da Ihre Anfrage legitim und in ihrem Umfang begrenzt erscheint, können Sie diese Antwort direkt vom GitHub-Support erhalten, indem Sie eine E-Mail an [email protected] senden.

Tatsächlich xpaulbettsx, ein GitHubber, auch tweeted about this:

Unterstützung @ ist gut für Alles, was Sie GitHub sagen wollen - Bugs, Features, hohe 5s; alles, aber die Sicherheit, die Sicherheit gehen @

+0

gut, obwohl der Benutzername ist der "echte Schlüssel" kann es ändern, was problematisch sein kann. – My1

+0

Warum enthält die API [https://stackoverflow.com/a/17309026/4854931] eine ID? – Alex78191