2013-08-13 9 views
12

Ich schreibe eine Django-App, die Django-Allauth für Facebook-Integration verwendet, und verwendet Django-Tastypie für ein Back-End für eine iOS-App. Die iOS App verwendet das native Facebook iOS SDK. Ich möchte in der Lage sein, neben der Website auch Facebook- und Nicht-Facebook-Nutzer aus der iOS-App zu bestätigen und zu bestätigen.Was ist der richtige Weg, um Django-Allauth mit Tastypie zu verwenden?

Das Problem ist, dass Django-Allauth keine API zu haben scheint, auf die extern zugegriffen werden kann. Die einzige saubere Möglichkeit, die Funktionalität von allauth zu pluginieren, scheint über Django Template-Tags zu sein. Gibt es eine Möglichkeit, diese Funktionalität für die Verwendung mit Tastypie verfügbar zu machen?

Django-allauth ist alles Open Source, also habe ich versucht, den Code zu analysieren. Meine ursprüngliche Idee ist, Benutzer auf der iOS-Seite mit dem nativen Facebook SDK zu authentifizieren, und dann manuell Informationen für SocialAccount, SocialToken einzugeben und den SocialAccount zu SocialApp hinzuzufügen (das sind alles Django-Allauth-Modelle). Dies scheint jedoch eine ziemlich hacky Lösung zu sein. Ich würde einen Weg lieben, all diese Modelle mit einer Facebook-ID oder etwas Ähnlichem sauber zu erstellen.

Update: Es gab einige discussion über dieses Thema auf die GitHub. Grundsätzlich gibt es noch keine integrierte Funktionalität. Ich werde eine benutzerdefinierte Lösung erstellen, die nur mit Facebook in Verbindung steht (weil das alles ist, was ich in meiner Anwendung verwende). Ich werde später hier posten, wenn es funktioniert.

Antwort

0

Ich benutze requests Bibliothek mit Facebook-API und es funktioniert gut, ich denke, keine soziale Login-Plugin für Django funktioniert für andere, aber der Autor, wenn Sie etwas ernstes tun wollen.

PS. Ich habe django-rest-framework verwendet, um das restliche Backend für mobile Apps zu erstellen, einschließlich lokalem Account Login und Social Site Login.

1

Ein kurzer Blick in django-allauth zeigt, dass sie das SocialAccount-Modell verwenden, um Daten über die spezifische Authentifizierungsmethode und den Typ des sozialen Accounts zu speichern.

Sie müssen einen API-Endpunkt basierend auf dem SocialAccount-Modell erstellen. Sie müssen Variablen wie: Kontotyp (Facebook, Lokal, Twitter usw.) weitergeben, zusätzliche Auth-Variablen, die von sozialen Auth-Providern benötigt werden. Anschließend können Sie in Ihrem Code Instanzen des SocialAccount-Modells erstellen, mit Daten füttern, die vom API-Endpunkt-Aufruf empfangen wurden, und den entsprechenden Auth-Aufruf über django-allauth auslösen. Schließlich sollten Sie das Ergebnis Ihres Auth-Aufrufs zurückgeben.

Ich sehe keinen großen Grund, django-allauth nur für lokale/facebook-auth zu verwenden, mit ein wenig Aufwand können Sie eine ganze Reihe von sozialen Auth-Providern haben.