2015-10-08 15 views
5

Pracuję nad aplikacją mobilną, która ma zintegrowane logowanie na Facebooku (przy użyciu fb android SDK). Mam również serwer, który ma kilka punktów końcowych odpoczynku, które chciałbym zabezpieczyć. Szukałem od wielu dni, próbując znaleźć najlepsze rozwiązanie (czytając artykuły na stronie dev: https://developers.facebook.com/docs/facebook-login/security, inne stackoverflow posty), ale nie jestem do końca pewien, co jest najlepszym rozwiązaniem.Mobilne logowanie do Facebooka i walidacja po stronie serwera

W tej chwili mam następującą konfigurację w lokalu:

  1. użytkownik loguje się w aplikacji przez Facebooka (mobile Android SDK).
  2. Podczas żądania zasobu z punktu końcowego odpoczynku, token zostanie dodany jako nagłówek.
  3. Po stronie serwera sprawdzania poprawności tokenu za pomocą FB debug_token punkt końcowy (https://developers.facebook.com/docs/graph-api/reference/v2.5/debug_token)
  4. Jeśli sprawdzanie poprawności powiodło pozwalam moim reszta zasób być „o nazwie”

Jak widać będę mieć zrób moją własną prośbę do Facebooka (po stronie serwera) dla każdego otrzymanego żądania. Czy istnieje lepszy sposób na rozwiązanie tego problemu?

Z góry dziękuję!

+4

zweryfikować tokenu raz, a następnie zapisać wynik w sesji. – CBroe

+0

Więc powinienem zachować wynik z debugowania tokena zapisanego w bazie danych? – Jdruwe

+0

Nie, chyba że rozszerzasz token, ponieważ będzie on ważny przez około dwie godziny. – CBroe

Odpowiedz

0

Facebook używa OAuth, a przy tym protokole powinieneś mieć w nagłówkach odpowiedzi lub treści atrybutu czasu wygaśnięcia przypisanego tokenu.

Dzięki temu można przechowywać w dowolnym miejscu krotkę (token, token_expiry), aby ominąć żądanie na facebooku przez większość czasu.

W rzeczywistości trzeba mieć odpowiedź z tych atrybutów:

{ 
"access_token": <access-token>, 
"token_type":<type>, 
"expires_in":<seconds-til-expiration> 
} 
+0

Więc mówię, że powinienem wysłać tę informację i przechowywać ją na moim serwerze? – Jdruwe

+0

Tak, możesz to zrobić (w pamięci i/lub długiej trwałości), aby zarządzać uwierzytelnianiem we wszystkich żądaniach użytkowników –

Powiązane problemy