Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony2][Facebook SDK] Problem z logowaniem
Forum PHP.pl > Forum > PHP > Frameworki
ZaqU
Mam problem z logowaniem za pomocą Facebook SDK for PHP (wersja 4, najnowsza). Nie wiem czy jest to spowodowane tym, że pracuję na localhoście, a nie na normalnej domenie, czy może po prostu po prostu o czymś zapomniałem w kodzie, albo coś przeoczyłem w dokumentacji Facebooka (zaznaczę, że była bardzo skąpa).

W każdym bądź razie, kod prezentuje się następująco:
  1. FacebookSession::setDefaultApplication('ID_MOJEJ_APLIKACJI', 'SECRET_MOJEJ_APLIKACJI');
  2.  
  3. $helper = new FacebookRedirectLoginHelper('http://localhost/');
  4. $loginUrl = $helper->getLoginUrl();
  5. echo "<a href='".$loginUrl."'>[ Logowanie przez fb ]</a>";
  6.  
  7. try {
  8. $session = $helper->getSessionFromRedirect();
  9. } catch (FacebookRequestException $ex) {
  10. echo "{ FacebookRequestException }";
  11. } catch (\Exception $ex) {
  12. echo "{ Exception }";
  13. }
  14.  
  15. if ($session) {
  16. // Logged in
  17. echo "{ Logged in }";
  18. } else {
  19. echo "{ Nope! Session is NULL }";
  20. }


Samo logowanie działa, to znaczy po kliknięciu przekierowuje ponownie na localhosta z dwoma parametrami GET, zaś gdy kliknąłem na ten przycisk po raz pierwszy, aplikacja poprosiła o zgodę na udzielenie informacji o mnie. Jednak na tym działanie aplikacji się kończy. Sesja jest pusta i zwraca { Nope! Session is NULL }. Poza tym PHP nie zwraca i nie raportuje żadnych błędów. Większość poradników w Internecie jest już nieaktualnych ze względu na nową (4.0) wersję tego API.
NoWay
Myślę, że to wina tego, że pracujesz na localhost. Spróbuj sobie założyć domenę na jakiejś darmowej stronie i tam spróbować.
ZaqU
Niestety nie mogę przetestować tego na innym serwerze. Raz, że będzie z tym za dużo problemów, a dwa, że korzystam z Symfony2 i głupotą byłoby testowanie Facebooka w jednym miejscu, a innych pakietów tego frameworka w drugim (w szczególności debugowanie). Myślałem nad tym, ale czym różni się localhost od zwykłej domeny, w szczególności, gdy jest on wpisany w konfiguracji aplikacji na stronie Facebook Developers.

-- EDIT --

Mały postęp, ustawiłem w pliku C:/Windows/System32/drivers/etc/host aby adres local.example.me przekierowywał na adres IP localhosta. Nie wiem jakim cudem to działa, ale takie rozwiązanie znalazłem na stackoverflow i poniekąd działa.

Poniekąd, ponieważ teraz wyświetla się błąd Symfony2:
Kod
Session not active, could not store state.
500 Internal Server Error - FacebookSDKException
  1. // Stack Trace
  2. // in C:\XAMPP\htdocs\moj_projekt\vendor\facebook\php-sdk-v4\src\Facebook\FacebookRedirectLoginHelper.php at line 188 -
  3. {
  4. if ($this->checkForSessionStatus === true
  5. && session_status() !== PHP_SESSION_ACTIVE) {
  6. throw new FacebookSDKException(
  7. 'Session not active, could not store state.', 720
  8. );
  9. }

Nie wiem na czym może polegać ten błąd, ponieważ sesje są włączone i normalnie działają (testowałem pobieranie i zapisywanie danych w sesji). Macie jakieś pomysły?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.