Closed dzida closed 9 years ago
Zwykle logowanie (nie facebook): Trzeba w poscie wyslac:
POST /o/token/ HTTP/1.1 Host: localhost:9000 Content-Length: 66 Accept-Encoding: gzip, deflate Accept: / User-Agent: HTTPie/0.9.2 Connection: keep-alive Content-Type: application/x-www-form-urlencoded; charset=utf-8 Authorization: Basic dGVzdDp0ZXN0
grant_type=password&username=sacherus.spam%40gmail.com&password=a
http --form POST http://localhost:8000/o/token/ grant_type=password username=a@a.com password=a -a"test:test1" zly client/client id: HTTP/1.0 401 UNAUTHORIZED { "error": "invalid_client" }
http --form POST http://localhost:8000/o/token/ grant_type=password username=b@a.com password=a -a"test:test1" zly uzytkownik/haslo HTTP/1.0 401 UNAUTHORIZED { "error": "invalid_grant", "error_description": "Invalid credentials given." }
zly grant type http --form POST http://localhost:8000/o/token/ grant_type=abc username=a@a.com password=a -a"test:test" HTTP/1.0 400 BAD REQUEST { "error": "unsupported_grant_type" }
Wszystko ok: HTTP/1.0 200 OK { "access_token": "OHCnlqu9mKtRRR5hMEIYFtIfswIOWf", "expires_in": 36000, "refresh_token": "bGX6IQBWBNjK7OLbAgJZbZqwnjmAH9", "scope": "read write", "token_type": "Bearer" }
Facebook logowanie/rejestracja:
Zly token: 400 Client Error: Bad Request + debug django TODO: poprawic komunikat bledu
Wszystko ok: HTTP/1.0 200 OK { "access_token": "OHCnlqu9mKtRRR5hMEIYFtIfswIOWf", "expires_in": 36000, "refresh_token": "bGX6IQBWBNjK7OLbAgJZbZqwnjmAH9", "scope": "read write", "token_type": "Bearer" }
Musimy się zastanowić jak połączyć rejestracje z tworzeniem profilu użytkownika. Część danych (np. handle) musi pochodzić z formularza w aplikacji natywnej.
Od strony API mozna zrobić jedno API do tworzenia usera, które przyjmie także dane na temat logowania lub rozbic to na kilka metod API (preferowałbym jedną metodę). Rozważyłbym też taki model działania, w którym to aplikacja kliencka pobiera z platformy społecznościowej wymagane informacje z profilu i sama formuję request do naszej aplikacji zawierający wszystki potrzebne do stworzenia usera informacje + dane dot. logowania (w przeciwieństwie do wydobywania informacji o profilu usera po stronie serwera).
Pytania:
Tez sie nad tym zastanawialem, wszystkie flowy sa takie, ze serwer wywoluje zapytania w imieniu klienta... Zeby zczytac na telefonie dane uzytkownika trzeba zakodowac secret id w Androidzie.
Myslalem o rozwiazaniu, zeby serwer staral sie wypelnic wszystko tj. handle i display name np. Laczac imie i nazwisko....
A pozniej uzytkownik by to poprawial na drugim oknie... aktualizujac juz normalnie dane profilowe.
Odp.
Pytania:
Zamkniete w #22 pull request. Dodam API to wiki.
Logowanie użytkownika polega na utworzeniu tokena dostępowego oraz zwrócenie go. Logowanie ma osobne metody API dla każdego sposobu logowania (FB, username)
W przypadku poprawnej walidacji zwracamy token dostępowy. Jeżeli istnieje już token dostępowy zwracamy istniejący.