2010-07-24 21 views
8

Zajmuję się witryną e-commerce PHP/MySQL z pewnymi aspektami społecznymi i zamierzam ją zintegrować z Facebookiem. Mam już macierzysty system rejestracji/obsługi sesji użytkownika. Udało mi się dołączyć element iframe "Wtyczki społecznościowe", na przykład przycisk "Lubię to". Ale naprawdę chciałbym zaoferować użytkownikom opcję rejestracji w serwisie za pośrednictwem Facebooka w ramach natywnego procesu rejestracji.Facebook Login jako uzupełnienie istniejącego loginu?

Rozumiem pomysł uzyskania tokenu dostępu za pośrednictwem protokołu OAuth, a ostatecznie uzyskanie identyfikatora użytkownika. Moje obawy są dwojakie:

  1. Czy ta metoda jest bezpieczna? To jest witryna e-commerce, ale nie przechowuję żadnych kart kredytowych ani żadnych innych poufnych danych. Nie mogę wymyślić, jak można to wykorzystać, ale jestem tylko jedną głową!

  2. Rozumiem, jak odzyskać początkowy token i uzyskać identyfikator użytkownika podczas procesu rejestracji. Ale jak rozpoznać użytkownika zwracającego (sesję)? Czy muszę zaimplementować pakiet JavaScript SDK (coś, czego chcę uniknąć)? Czy mam obchodzić się z sesjami tak, jakby były już obsługiwane, ale zastąpić zwykły identyfikator użytkownika w pliku cookie sesji z identyfikatorem użytkownika Facebooka, gdy jest to właściwe?

Przepraszam, jeśli odpowiedzi są oczywiste. Przeszukałem dokumentację Google'a i Facebooka, ale połowa znalezionych przeze mnie linków to wycofane artykuły wiki FBConnect, a nowe dokumenty są pomocne, ale są rzadkie na przykładach. Nie mam pojęcia, co jest nadal obsługiwane, co nowego i jak to zrobić!

+1

Czy jest jakiś powód, dla którego nie chcesz używać SDK? SDK jest wygodnym opakowaniem dla wszystkich "przysięgowych" rzeczy, o które musisz się martwić inaczej. Wystarczy kliknąć przycisk 'fb: login-button' na swojej stronie, a następnie użyć jednego wiersza kodu, aby uzyskać logowany identyfikator użytkownika (po stronie js lub serwera). – serg

+0

Sądzę, że jestem po prostu zdezorientowany co do integracji javascript po stronie klienta z PHP po stronie serwera. Mechanizm logowania do mojej witryny wykorzystuje sesję PHP i jest już zbudowany. Jestem zdezorientowany na kroki niezbędne do podjęcia uwierzytelniania logowania z javascript i ustanowienia bezpiecznej sesji PHP z nim. Wiem, że javascript ustawia plik cookie - czy muszę na nim polegać i zastąpić całą istniejącą konfigurację sesji? Mój mózg ma kłopot z zawieraniem idei zaangażowania trzeciej strony podczas logowania! –

+0

Normalnie potrzebujesz do tego apletów JS i PHP facebook. JS api będzie używane do wyświetlania okien dialogowych logowania na facebooka, podczas gdy PHP może zostać użyte do uzyskania zalogowanego identyfikatora użytkownika. Nie musisz się martwić o sesję, w PHP api musisz ją najpierw zainicjować (poprzez podanie informacji o aplikacji), a następnie po prostu powiedzieć coś w rodzaju '$ api-> getLoggedUserId()' (nie zna dokładnej składni PHP api) . Następnie możesz zapisać zwrócony identyfikator w sesji samodzielnie, jeśli chcesz. Inną opcją byłoby użycie FB connect tylko w celu ułatwienia twojej rejestracji użytkownikom fb (podobnym do Digg) (* przepraszam, że zabrakło miejsca *) – serg

Odpowiedz

14
  1. Tak Oauth jest bardzo bezpieczny. Wiele aplikacji opiera się na nim i nie ma znanych sposobów jego wykorzystania.

  2. Jednym ze sposobów, w jaki można to zrobić, jest przechowywanie identyfikatorów użytkowników Facebooka, więc po ich powrocie można zauważyć, że ich identyfikator już istnieje w twoich rejestrach i że jest to powracający użytkownik. Ich sesja może być inna (np. Wygasła od ostatniej wizyty), więc nie chcesz przechowywać ich tokena dostępu; ale ich identyfikator użytkownika Facebooka jest zawsze taki sam.

Jak ja w zasadzie zintegrowana Facebook rejestracyjny/login na mojej stronie jest Dodałem facebook_id kolumnę w moim tabeli użytkowników i przycisk „Zarejestruj się z Facebook”. Jeśli użytkownik kliknie, uwierzytelni się z Facebookiem, a ja otrzymam sesję, a użytkownik jest nowy, przekierowuję na stronę rejestracji, wypełnij tyle pól, ile mogę, danymi z Facebooka (takimi jak ich nazwa) i dodaj identyfikator Facebooka jako ukryte pole wejściowe. Dlatego gdy się zarejestrują, ich facebook_id zostanie wypełniony w bazie danych. Jest to ta sama strona rejestracyjna co strona standardowa, więc jedyną różnicą dla użytkownika spoza Facebooka jest to, że pole facebook_id będzie puste. Jeśli chcesz, nie możesz też wymagać hasła dla użytkowników Facebooka.

Aby użytkownik mógł się zalogować, wystarczy kliknąć przycisk "Zaloguj się za pomocą Facebooka" i uwierzytelnić się za pomocą Facebooka. Gdy tylko Facebook da mi sesję, loguję użytkownika jako użytkownika, który ma facebook_id, jak ten w sesji Facebooka. Ponieważ obawiasz się o bezpieczeństwo, zauważę, że ta sesja nie może zostać sfałszowana, ponieważ jest podpisana tajnym kluczem aplikacji, który znają tylko Ty i Facebook. Jeśli korzystasz z SDK Facebooka (powinieneś), nie musisz się martwić o podpisanie i weryfikację podpisu. Fakt, że można odczytać spójne informacje z sesji, oznacza, że ​​SDK Facebooka to zweryfikował.

This Facebook page to świetny przewodnik na temat integracji rejestracji z Facebookiem.

+0

Dzięki, to było świetne. Sądzę, że potrzebowałem tylko wysokiego poziomu przeglądu działania mechanizmu logowania z istniejącą obsługą sesji. Myślę, że mam na to ochotę - teraz, aby faktycznie spróbować! –

Powiązane problemy