Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Facebook SDK -> CURL - próba zalogowania się na stronę poprzez facebooka
Forum PHP.pl > Forum > PHP
Michael2318
Próbuję zalogować się na stronę poprzez facebooka (Login with Facebook) poprzez curl'a. Czyli standardowo jeśli chcemy zalogować się gdzieś poprzez facebooka, klikamy w button: Login with Facebook, przekierowuje nas do logowania do facebooka, potem do okna, gdzie zatwierdzamy uprawnienia i potem z powrotem lecimy na pierwotną stronę, będąc już zalogowanym.

W całym tym skrypcie chodzi o to, że chcę poprzez crona co X czasu dodawać posta w mojej grupie z pewnym zdjęciem (co post to inne zdj.) z wykorzystaniem SDK. Zdjęcia są na moim serwerze. Nie mogę jednak tego zrobić jeśli jakoś nie zautomatyzuję sprawy związanej z tym klikaniem w button, czyli po prostu autoryzacją po stronie facebooka.

Doszedłem do tego, że najpierw mogę zalogować się poprzez curl'a na FB. Potem mogę sobie wygenerować adres url do "logowania" (jestem już zalogowany tak naprawdę, ale chodzi o adres, który generuje SDK za pośrednictwem:

  1. $loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions));


). Jak wejdę w link zawarty w zmiennej $loginUrl to normalnie musiałbym się tam dopiero logować, a że zalogowałem się już wcześniej to teoretycznie po wejściu w link z tej zmiennej powinienem zostać automatycznie przekierowany do mojej strony, gdzie autoryzacja po stronie facebooka powinna być wykonana poprawnie.
Tak jednak nie jest. Logować mnie loguje do facebooka poprawnie, natomiast jeśli próbuję wejść w link ze zmiennej w $loginUrl, dostaję białą stronę po długim "myśleniu" serwera. Zarówno logowanie do FB jak i przechodzenie w link ze zmiennej $loginUrl wykonuję, dodając do mojego połączenia CURL ten fragment:

  1. curl_setopt($c, CURLOPT_COOKIEFILE, 'fb_cache.txt');
  2. curl_setopt($c, CURLOPT_COOKIEJAR, 'fb_cache.txt');


zapisujący moje cookiesy. Tak więc jak już skrypt mnie poprawnie zaloguje, po wejściu w link ze zmiennej $loginUrl dostaję białą stronę. Jeśli jednak usunę z połączenia CURL powyższe dwa zapisy dot. cookiesów, zostaję przekierowany do formularza logowania. Potem dodaję powyższe dwie linie i znów próbuję wejść na stronę - znów myśli, aż w końcu kończy się to białą stroną. Potem znów usuwam powyższe dwie linie z kodu i znów jestem przekierowany do formularza z logowaniem. Finalnie dodaję te dwie linie i... jestem zalogowany, trafiam tam gdzie powinienem trafić.

Moje pytanie - dlaczego muszę dwa razy usuwać wzmiankę o zawartości cookiesów z curla, dwa razy je dodawać (wszystko naprzemiennie) i dopiero na końcu facebook nie robi problemów i:
a) widzi mnie jako zalogowanego usera na fb,
cool.gif przyjął do wiadomości, że zainicjowałem kliknięcie w button "login with Facebook"?

Może ktoś już się z tym męczył i mnie jakoś wspomorze dobrą radą?


Zapewne ktoś zapyta dlaczego najpierw nie wchodzę w adres ze zmiennej $loginUrl i tam po ukazaniu formularza logowania się nie loguję. Otóż próbowałem, ale mimo że uwzględniam wszystkie ukryte pola i uzupełniam je tak jak to powinno być, facebook mnie nie loguje, dostaję jedynie informację, że: "Aby kontynuować, muszę się zalogować"...

Dzięki.
grzes999
Jeżeli logujesz się wyłacznie po to zęby dodać posty na jakiejś tablicy, można to chyba było obejść po przez dostęp offline; ale już danow korzystałem z ich API to mogło się coś pozmieniać.
Michael2318
No właśnie w tym problem, że jest kilka wersji API (od 2.0 do 4.0 bodajże) i w każdej wersji to wyglądało trochę inaczej. Teraz czytając artykuły po necie, nie mogę się nic sensownego dowiedzieć bo większość dotyczy starych API i obecnie te rozwiązania są już nieużyteczne...
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.