/ / Eine einfache und aktuelle Möglichkeit, das Facebook-Login in einer Django-App zu implementieren - Django, Facebook, Facebook-Javascript-SDK, Django-Socialauth, Django-Allauth

Eine einfache und aktuelle Art, Facebook-Login in einer Django-App zu implementieren - django, facebook, facebook-javascript-sdk, django-socialauth, django-allauth

Dieses Problem ist in stackoverflow sehr verbreitet und es gibt viele verschiedene Fragen und Antworten, aber ich konnte nicht genau das finden, was ich brauche.

Zuerst möchte ich genau definieren, was ich brauche: die Option, dass sich Benutzer mit ihren Facebook-Anmeldeinformationen bei meiner App anmelden können. Die App speichert einen passenden klassischen Django-Benutzer. Ich brauche nur das Profilbild des Benutzers zu verwenden und sicherzustellen, dass derselbe Facebook-Benutzer mit dem entsprechenden Django-Benutzer in Verbindung steht.

Leider finde ich es sehr frustrierend aus folgenden Gründen zu implementieren:

  1. Nachdem ich viel gelesen hatte, konnte ich nicht herausfinden, welches Paket für diese Aufgabe am besten geeignet ist.
  2. Einige Leute empfehlen django-social-auth undloben seine Funktionalität und Dokumentation. Ich persönlich verstehe nicht warum, denn es ist nicht speziell für Facebook und es gibt keine Erklärungen über die Client-Seite, d. H. Den Facebook-Login-Button und wie der gesamte Ablauf funktioniert.
  3. Wenn Sie zu Facebook-Entwicklern gehen, werden Sie plötzlichLesen Sie etwas über magisches Javascript sdk und über ein Versprechen, dass dies alles ist, was Sie brauchen. Dann werden Sie wieder frustriert und können nicht verstehen, wie ein clientseitiges sdk Benutzer zu Ihrer App anmelden kann.

Ich weiß, dass Entwickler irgendwie Facebook-Authentifizierungspakete in ihren Apps implementieren, aber ich kann einfach nicht herausfinden, wie das geht.

Wenn mir jemand sagen könnte: Wie kann ich meine Django-App am besten mit der Facebook-Authentifizierung versehen? Ich würde auch nach einer ausführlichen Dokumentation / einem Tutorial fragen, in dem erklärt wird, wie Sie sich bei einem Facebook-Benutzer anmelden, von den Einstellungen und der Konfigurationsebene über die Anmeldung bei der Django-App und den clientseitigen Code.

Antworten:

3 für die Antwort № 1

Es gibt mehrere Wege, sich dem Problem zu nähern. Was der "beste" Weg ist, ist wirklich subjektiv.

Subjektiv könnte man sich dafür entscheiden django-allauth. Hier einige Hinweise, die Ihnen beim Start helfen sollen:

  • Wenn Sie die Anmeldung einfach halten möchten, legen Sie fest SOCIALACCOUNT_AUTO_SIGNUP zu True um ein "keine Fragen" -Login zu erhalten. Benutzer genehmigen einfach den FB-Dialog und sind sofort in Ihrer Site angemeldet.

  • Wenn Sie Ihrer Vorlage eine Anmeldeschaltfläche hinzufügen, müssen Sie lediglich Folgendes tun:

    <a href="{% provider_login_url "facebook" %}">Sign In</a>

  • Die App bietet Unterstützung für das JS SDK-Login (Pro: Benutzer sind an das typische FB-Popup-Fenster gewöhnt), das angezeigt wird. Was auch immer du magst.


1 für die Antwort № 2

Der schnellste Weg versteht FBs Oauth 2.0 Fluss ist mit dem Javascript SDK des FBs zu spielen. Sobald Sie den Dreh raus haben, ist die PHP-Bibliothek des FBs ähnlich. Andere OAuth-Sites wie Google, Twitter oder Dropbox haben eine nahezu identische Implementierung.

In kleinen Schritten:

  1. Erfahren Sie, wie Sie installieren FB Javascript SDK auf eine einfache Seite

  2. Benutzen Fb Login um den Login-Status zu ermitteln und die Login-URL zu erhalten.

  3. Zum Schluss verwenden FB.Event.Subscribe und abonnieren Sie auth.statusChange, um die Änderungen der Anmeldung / Abmeldung zu erkennen.

Auch gut zu überprüfen https://developers.facebook.com/roadmap/ auf die kommenden Features oder Features entfernt werden.


0 für die Antwort № 3

django-social-auth ist nicht nur für Facebook, aber das bedeutet nicht, dass Sie alle verfügbaren Backends verwenden sollten.

Projektdokumentation ist um http://django-social-auth.readthedocs.org/en/latest/index.html und Facebook Backend-Details unter http://django-social-auth.readthedocs.org/en/latest/backends/facebook.html.