Długotrwały dostęp do FB-token dla serwera do pobierania informacji o stronie FB

Zdaję sobie sprawę, że jest wiele pytań o Facebook access-tokeny i smutek, który powodują, ale mimo wielu eksperymentów i czytania wielu frustrująco niejasnych artykułów na blogu (FB i nie tylko), nadal staram się uzyskać jasną odpowiedź na moje potrzeby. Pozwól, że zwięźle opiszę mój dotychczasowy proces:

  • tworzę stronę, która po stronie serwera musi pobierać posty / statusy z jednej strony Facebook
  • jestem adminem tej strony Facebook
  • mam tworzenie aplikacji Facebook
  • korzystając z Eksploratora API Facebook Graph , wygenerowałem krótkotrwały klucz, połączony z moją aplikacją i moim kontem, który upoważnia moje konto do przeglądania tokenów dostępu dla moich stron
  • zamieniłem mój klucz krótkotrwały na klucz długowieczny (60 dni) Ala scenariusz 4 z to
I tu utknąłem. Mój klucz 60-dniowy działa dobrze, aby mój serwer pobierał potrzebne informacje ze strony, ale o ile mogę powiedzieć, jest nie ma możliwości programowego przedłużenia tego 60-dniowego klucza. Nie znam również sposobu na wygenerowanie nowego klucza krótkotrwałego bez ręcznego przechodzenia do Eksploratora Facebook Graph API i tworzenia go. Ponieważ Facebook Facebook API jest moim serwerem, a nie systemem opartym na użytkowniku (gdzie mogę łatwo poprosić Użytkownika o ponowne autoryzowanie aplikacji na Facebooku), tworzy to bardzo niezgrabny system. Ponieważ Facebook deprecated offline_access, naprawdę nie ma stałego sposobu, aby mój serwer pull info z mojej własnej strony? Czy naprawdę będę musiał ręcznie utworzyć nowy klucz i ręcznie aktualizować serwer za pomocą niego co 60 dni?

Czy coś mi umyka?

Update:

przewodnik krok po kroku, który został wcześniej tutaj znaleziony, został przeniesiony do własnej odpowiedzi .

Author: Community, 2012-08-29

4 answers

są to kroki, które były wcześniej w pytaniu - zostały przeniesione do tej odpowiedzi.

Po odkryciu, że możliwe jest wygenerowanie Tokena dostępu do strony Facebook, który nie wygasa (z pomocą @Igy), oto jasny, krok po kroku quide dla wszystkich tych, którzy chcą tego samego:

  1. upewnij się, że jesteś administratorem strony FB, z której chcesz pobierać informacje]}
  2. Utwórz aplikację FB (powinna być z tym samym kontem użytkownika, które jest strona admin)
  3. przejdź do Facebook Graph API Explorer
  4. W prawym górnym rogu wybierz utworzoną aplikację FB z listy rozwijanej" aplikacja "
  5. Kliknij "Pobierz Token Dostępu"
  6. upewnij się, że dodałeś manage_pages pozwolenie
  7. Przekształć ten krótkotrwały token dostępu w długotrwały, wykonując to wywołanie Graph API: https://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>
  8. chwyć nowy, długotrwały token dostępu zwrócony
  9. Make a Graph API call to see your konta używające nowego długoterminowego tokena dostępu: https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
  10. chwyć access_token za stronę, z której będziesz pobierał informacje
  11. Lint token, aby zobaczyć, że jest ustawiony na Expires: Never!
To powinno wystarczyć. Teraz powinieneś mieć Token dostępu do strony Facebook, który nie wygasa, chyba że:
  • zmieniasz hasło do konta Facebook
  • tracisz dostęp administratora do strony docelowej
  • usuwasz lub dezautoryzujesz swojego Facebook ' a App

Każdy z nich spowoduje, że token dostępu stanie się nieważny.

Jeśli otrzymujesz (#100) Tried accessing nonexisting field (accounts) on node type (Page), przejdź do debugera Access Token, skopiuj wartość User ID i użyj jej do zastąpienia części "ja" adresu URL w kroku 9.

 177
Author: redhotvengeance,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-21 23:03:03

Jest to omówione w offline access deprecation document

Użyj 60-dniowego tokena dla administratora strony, aby odzyskać 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

 14
Author: Igy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-17 08:37:23

Wielkie podziękowania dla @ redhotvengeance za przewodnik krok po kroku.

Po pewnym czasie, teraz jest wyraźnie opisane w dokumentacji Facebook:

Https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension

Rozszerzenie Tokenów Dostępu Do Strony

Aplikacje mogą pobierać token dostępu do strony od użytkowników administratora strony, gdy uwierzytelnianie za pomocą uprawnień manage_pages. Jeśli dostęp Użytkownika token użyty do pobrania tej strony token dostępu jest krótkotrwały, strona token dostępu będzie również krótkotrwały.

Aby uzyskać dłuższy token dostępu do strony, wymień dostęp Użytkownika token na długo trwający, jak wyżej, a następnie zażądać dostępu do strony token. Wynikowy token dostępu do strony nie będzie miał żadnego czasu wygaśnięcia.

 1
Author: Athlan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-25 19:34:31

Można również kopiować i przeszłości z pulpitu aplikacji na facebook. Kroki:

  1. Przejdź do https://developers.facebook.com

  2. Wybierz aplikację w prawym górnym rogu strony (zdjęcie jak wygląda)

  3. Kliknij na Messenger z opcji po lewej (przejdzie do Ustawienia automatycznie) (zdjęcie jak wygląda)
  4. Przejdź do sekcji "generowanie tokenów" na stronie. Wybierz stronę, którą chcesz Wygeneruj token dla. (zdjęcie jak wygląda ta sekcja)
  5. Skopiuj i prześlij token strony tam, gdzie go potrzebujesz.

Pamiętaj, że chociaż teoretycznie twój token nie wygaśnie, to jest bezpośrednio powiązany z tym, na jakie konto facebook się zalogowałeś. Jeśli więc zmienisz hasło lub usuniesz uprawnienia między kontem a aplikacją, token nie będzie już ważny.

 0
Author: Heidi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-27 16:40:48