Zdaję sobie sprawę, że jest wiele pytań dotyczących tokenów dostępu do Facebooka i żalu, jaki powodują, ale pomimo wielu eksperymentów i czytania wielu frustrująco niejasnych artykułów na blogach (FB i nie tylko), wciąż staram się uzyskać jasną odpowiedź na swoje potrzeby . Pozwólcie, że zwięźle przedstawię dotychczasowy proces:
- Tworzę witrynę, która po stronie serwera musi pobierać posty / statusy z jednej strony na Facebooku
- Jestem administratorem tej strony na Facebooku
- Stworzyłem aplikację na Facebooku
- Korzystając z Facebook Graph API Explorer , wygenerowałem krótkotrwały klucz, połączony z moją aplikacją i kontem, który daje mojemu kontu pozwolenie na przeglądanie tokenów dostępu do moich stron
- Przekonwertowałem mój klucz krótkotrwały na klucz długowieczny (60 dni) ala scenariusz 4 z tego
I tutaj utknąłem. Mój klucz 60-dniowy działa dobrze, aby mój serwer pobierał informacje potrzebne ze strony, ale z tego co wiem, nie ma możliwości programowego przedłużenia tego klucza 60-dniowego. Nie znam też sposobu na wygenerowanie nowego krótkotrwałego klucza bez ręcznego przechodzenia do Facebook Graph API Explorer i tworzenia go.
Ponieważ to mój serwer wysyła żądania do interfejsu API Facebooka, a nie system oparty na użytkownikach (gdzie mógłbym łatwo zażądać, aby użytkownik ponownie autoryzował aplikację Facebooka), tworzy to bardzo niezgrabny system. Odkąd Facebook został wycofany offline_access
, czy naprawdę nie ma stałego sposobu, aby mój serwer pobierał informacje z mojej własnej strony? Czy naprawdę będę musiał ręcznie utworzyć nowy klucz i ręcznie aktualizować go na serwerze co 60 dni?
A może jest coś, czego mi brakuje?
Aktualizacja:
Przewodnik krok po kroku, który został wcześniej znaleziony tutaj, został przeniesiony do jego własnej odpowiedzi .
źródło
Odpowiedzi:
Po stwierdzeniu, że można wygenerować token dostępu do strony na Facebooku, który nie wygasa (z pomocą @Igy), oto przejrzysta instrukcja krok po kroku dla wszystkich, którzy szukają tego samego:
manage_pages
uprawnieniahttps://graph.facebook.com/oauth/access_token?client_id=<your FB App ID >&client_secret=<your FB App secret>&grant_type=fb_exchange_token&fb_exchange_token=<your short-lived access token>
https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
access_token
stronę, z której będziesz pobierać informacjeExpires: Never
!Że należy to zrobić. Powinieneś teraz mieć token dostępu do strony na Facebooku, który nie wygasa, chyba że:
Każde z nich spowoduje unieważnienie tokena dostępu.
Jeśli otrzymujesz
(#100) Tried accessing nonexisting field (accounts) on node type (Page)
, przejdź do narzędzia Access Token Debugger , skopiuj wartośćUser ID
i użyj jej do zastąpienia części „ja” adresu URL w kroku 9.źródło
manage_pages
Opcja jest podExtended Permissions
karcie.Jest to omówione w dokumencie wycofania dostępu w trybie offline
Użyj 60-dniowego tokena dla administratora strony, aby pobrać token dostępu do strony (przez
/PAGE_ID?fields=access_token
lub/me/accounts
) - token dostępu do strony nie będzie miał czasu wygaśnięciaźródło
page_access_token
pomocą kodu w javascript? Jak sposób na zdobycieuser_access_token
>FB.getAuthResponse()['accessToken'];
Dzięki!Podejście, które sprawdza się w 2019 roku
Ostatnio próbowałem osiągnąć coś podobnego (do przypadku użycia opisanego w tym wątku), ale chciałem upewnić się, że przestrzegam obecnych zasad Facebooka, więc poszukałem trochę informacji i tutaj dzielę się tym, co znalazłem.
Mój przypadek użycia
Tak więc, jak już powiedziałem, mój przypadek użycia jest bardzo podobny do opisanego tutaj; to jest:
Moim zdaniem jest to uzasadniony przypadek użycia, ale nie byłem pewien, jak go wdrożyć w sposób zgodny z polityką Facebooka.
Zaakceptowana odpowiedź
Postępowałem zgodnie z krokami zaakceptowanej odpowiedzi i zadziałało, z tym że wygląda na to, że coś się zmieniło: teraz, mimo że wygenerowany token strony nie traci ważności,
access to data
wygasa po około 60 dniach. Zobaczysz to również, jeśli wykonasz procedurę i sprawdzisz token strony w narzędziu FB Token Debugger Tool .Poza tym fakt, że wygenerowane tokeny stron są powiązane z kontem użytkownika, jest również niefortunny, ponieważ jeśli użytkownik zaktualizuje swoje hasło, to token strony również zostanie unieważniony.
Jak to zrobić w 2019 roku
Po kilku godzinach poszukiwań natknąłem się na następujący artykuł w dokumentacji Facebooka: Business Login for Direct Businesses .
Okazuje się, że można teraz, wykonując kroki opisane w powyższym artykule, wygenerować token strony, który nie jest powiązany z żadnym konkretnym kontem użytkownika Facebooka i który nie wygaśnie (chyba że zostanie usunięta aplikacja FB lub podstawowy token aplikacji zostanie usunięty, wiesz ...)
Oto kroki i najważniejsze części:
manage_pages
ipublish_pages
.Ten token nigdy nie wygaśnie i nie będzie powiązany z konkretnym użytkownikiem Facebooka, więc jest dokładnie tym, czego potrzebujemy!
Ostatnią częścią jest upewnienie się, że Twoja aplikacja Facebook zostanie zatwierdzona przez Facebooka. To właściwie najważniejsza część, bo cała procedura jest bezwartościowa, jeśli ludzie nie widzą naszych postów.
Chciałem wiedzieć na pewno, że mogę polegać na powyższej procedurze i zbudować coś dla mojego klienta bez Facebooka odrzucającego to w końcu, więc wcześniej (tj. Przed rozpoczęciem pracy nad projektem mojego klienta) przeszedłem przez cały proces tworzenie strony, aplikacji, konta Business Managera itp. Zweryfikowałem swoją firmę. Przesłałem moją aplikację do sprawdzenia. W mojej prośbie bardzo szczegółowo opisałem mój przypadek użycia i podkreśliłem, że aplikacja jest przeznaczona do „użytku własnego” (tj. Organizacja opracowuje aplikację dla siebie, a nie dla innych użytkowników Facebooka). Zostałem zatwierdzony bez mniej niż 24 godzin.
Kilka innych uwag na temat procesu recenzji aplikacji:
curl
narzędzia (do generowania tokena strony i wysyłania postów na stronę na Facebooku). Pokazałem również, jak za pomocą Business Managera łączyłem użytkownika systemu ze stroną i generowałem token i tak dalej.Mam nadzieję, że te informacje będą przydatne dla osób o podobnych przypadkach użycia.
źródło
Wielkie dzięki dla @redhotvengeance za przewodnik krok po kroku.
Po jakimś czasie w dokumentacji Facebooka jest teraz jasno opisane:
https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension
źródło
Możesz także kopiować i wklejać z pulpitu aplikacji na Facebooku. Kroki:
Przejdź do https://developers.facebook.com
Wybierz swoją aplikację w prawym górnym rogu strony (zdjęcie, jak to wygląda)
Pamiętaj, że chociaż teoretycznie twój token nie wygaśnie, jest bezpośrednio powiązany z kontem na Facebooku, na które jesteś zalogowany. Powiedz więc, że zmieniasz hasło lub usuwasz uprawnienia między kontem a aplikacją, a token nie będzie już ważny.
źródło