![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Korzystam z wywołań graph API u siebie w projekcie PHP.
Przy każdym logowaniu generuję też access token aplikacji. Logowanie przez aplikację wymaga zgody na udostępnienie daty urodzenia (bez tego aplikacja nie przepuszcza do logowania). Po logowaniu dodaję info o użytkownikach do bazy i później na podstawie ich FB_USER_ID mogę pobierać informacje/wykonywać akcje. Wszystkie opcje mi działają prócz daty urodzin. Próbuję ją pobrać tak: $fbf = file_get_contents('https://graph.facebook.com/'.$fb_id.'/?access_token='.$appaccesstoken); $fbf = json_decode($fbf); print_r($fbf); echo $fbf->birthday; Dostaję tablicę danego użytkownika z podstawowymi danymi, ale daty urodzin (birthday, wg dokumentacji), tam nie ma. Konfiguracja zezwoleń w aplikacji: http://i.imgur.com/xxWEPEw.jpg SCOPE przy logowaniu przez FB: scope=publish_actions,share_item,status_update,email,user_likes,user_birthday Wszystkie inne rzeczy dostaję bez problemu (email, mogę publikować informacje, lajkować itp., ale nie dostaję daty urodzenia...). Co robię źle? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 17 Dołączył: 15.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
nie wykonujesz zapytania o pole urodzin. przetestuj sobie zapytania tutaj https://developers.facebook.com/tools/explorer potem jak bd ok uzyskaj nowy token
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za ten debugger. Wybierając birthday mam "field is empty or disallowed by the access token".
Rozumiem, że mój AT nie uwzględnia tego pola, ale generuję go przy każdym logowaniu z określonym SCOPE, więc powinien się odświeżać. Generując nowy access token z poziomu tego debuggera dla mojej aplikacji wszystko jest OK, ale przecież nie wkleję tego tokena na sztywno w kod. Jak zrobić, by taki też generował się u mnie? Robię to tak: Kod $appaccesstoken = file_get_contents('https://graph.facebook.com/oauth/access_token?client_id='.$fb['client_id'].'&client_secret='.$fb['client_secret'].'&grant_type=client_credentials'); Coś tutaj jeszcze muszę zmienić? Ten post edytował LamaMASTER 2.06.2013, 18:29:33 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 17 Dołączył: 15.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ja to robię w ten sposób:
i np link albo od razu przekierowanie: i teraz na podstawie tokena pobierasz dane z json // $appId - chyba wiadomo $urlHost - np localhost $_SESSION['state'] - $_SESSION['state']=md5(uniqid(rand(),true)); |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tak mam jak loguję usera i wtedy na jego access tokenie mogę pobrać dane bez problemu.
Chodzi o to, że jak już usera dodałem do bazy to generuję app access token, który jest używany np. w cronie, który z kolei sprawdza czy user zalajkował stronę i takie tam. Teraz chcę uzupełnić daty urodzin (wcześniej nie było tej opcji) i też cron ma przelecieć po użytkownikach i to sprawdzić (użytkownicy już zezwolili na to info), ale tutaj już nie wiem jak wygenerować sensowny access token aplikacji z danymi uprawnieniami . Mój fragment kodu jest wzięty z dokumentacji FB: https://developers.facebook.com/docs/facebo...ens/#generating Oczywiście mógłbym pobrać daty zaraz po zalogowaniu usera, ale musiałbym czekać, aż każdy znowu się zaloguje (IMG:style_emoticons/default/smile.gif) Poza tym to samo będzie ze sprawdzaniem lajków, jak ktoś odlajkuje stronę to chcę mu wyłączyć pewne profity, a takie sprawdzanie chciałem robić raz dziennie cronem właśnie jako pętla z appaccesstoken, która sprawdzi każdego usera od razu, nawet jeśli nie logował się od dawna na stronie. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 17 Dołączył: 15.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
ale jak aktualny access token nie udostępnia w scope daty urodzin to nie ma opcji aby tak o sobie dopisać birthday, musisz chyba aktualizować te tokeny, ja innej opcji nie widze
Ten post edytował ssstrz 2.06.2013, 19:25:09 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
OK, mam rozwiązanie.
Niepotrzebnie generuję APP Access Token. Wydawało mi się, że tego typu TOKEN generuje wszystkie uprawnienia aplikacji i pozwala na pokazywanie wszystkiego, a tak naprawdę on służy tylko do zarządzania aplikacją i nie jest potrzebny (nazwa jest myląca). Zamiast tego wystarczy generować zwykły access token, ten sam co przy logowaniu użytkowników (ze scope), ale nie trzeba do niego robić logowania. Token uwzględnia wszystkie uprawnienia i możemy używać po prostu $_SESSION['access_token'] do autoryzowania sprawdzania urodzin, lajków itp. Teraz wszystko śmiga (IMG:style_emoticons/default/smile.gif) Dzięki za nakierowanie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 21:10 |