facebook: stały token dostępu do strony?

193

Pracuję nad projektem, który ma strony na Facebooku jako jedno ze źródeł danych. Okresowo importuje z niego niektóre dane bez graficznego interfejsu użytkownika. Następnie używamy aplikacji internetowej do wyświetlania danych, które już mamy.

Nie wszystkie informacje są jawne. Oznacza to, że muszę raz uzyskać dostęp do danych, a następnie je zachować. Jednak nie znam tego procesu i nie znalazłem jeszcze dobrego samouczka na ten temat. Chyba potrzebuję access_token, w jaki sposób mogę uzyskać od użytkownika, krok po kroku? Użytkownik jest administratorem strony na Facebooku, czy będzie musiał dodać naszą aplikację FB do strony?

EDYCJA: Dzięki @phwd za wskazówkę. Zrobiłem samouczek, jak uzyskać stały token dostępu do strony, nawet jeśli offline_accessjuż nie istnieje.

EDYCJA: Właśnie dowiedziałem się, że odpowiedź tutaj: Długotrwały token dostępu FB dla serwera, aby pobrać informacje o stronie FB

Vlasec
źródło
Wydaje się, że tak. Mam lepszy tytuł, ma bardziej szczegółowe pytanie i oboje mamy mniej więcej taką samą odpowiedź.
Vlasec,

Odpowiedzi:

638

Postępując zgodnie z instrukcjami zawartymi w dokumentacji rozszerzającej tokeny stron Facebooka, udało mi się uzyskać token dostępu do strony, który nie wygasa.

Sugeruję użycie Eksploratora API Graph dla wszystkich tych kroków, chyba że zaznaczono inaczej.

0. Utwórz aplikację Facebook

Jeśli masz już aplikację , przejdź do kroku 1.

  1. Przejdź do Moich aplikacji .
  2. Kliknij „+ Dodaj nową aplikację”.
  3. Skonfiguruj aplikację internetową.

Nie musisz zmieniać jego uprawnień ani nic. Potrzebujesz tylko aplikacji, która nie zniknie, zanim skończysz korzystać z tokena dostępu.

1. Zdobądź token dostępu krótkoterminowego użytkownika

  1. Przejdź do Graph API Explorer .
  2. Wybierz aplikację, dla której chcesz uzyskać token dostępu (w menu rozwijanym „Aplikacja”, a nie w menu „Moje aplikacje”).
  3. Kliknij „Uzyskaj token”> „Uzyskaj token dostępu użytkownika”.
  4. W wyskakującym okienku na karcie „Rozszerzone uprawnienia” zaznacz „zarządzanie_stronami”.
  5. Kliknij „Uzyskaj token dostępu”.
  6. Udziel dostępu z konta na Facebooku, które ma dostęp do zarządzania stroną docelową. Pamiętaj, że jeśli ten użytkownik utraci dostęp do ostatniego, nigdy nie wygasającego tokena dostępu prawdopodobnie przestanie działać.

Token pojawiający się w polu „Token dostępu” jest tokenem dostępu krótkotrwałego.

2. Wygeneruj Token Długiego Życia

Postępuj zgodnie z instrukcjami z dokumentów Facebooka, zgłoś prośbę GET na adres

https://graph.facebook.com/v2.10/oauth/access_token?grant_type=fb_exchange_token&client_id= {app_id} & client_secret = {app_secret} & fb_exchange_token = {short_lived_token}

wpisanie identyfikatora i hasła aplikacji oraz krótkotrwałego tokena wygenerowanego w poprzednim kroku.

Nie można używać Eksploratora API Graph . Z jakiegoś powodu utknął na tej prośbie. Myślę, że dzieje się tak, ponieważ odpowiedzią nie jest JSON, ale ciąg zapytania. Ponieważ jest to żądanie GET, możesz po prostu przejść do adresu URL w przeglądarce.

Odpowiedź powinna wyglądać następująco:

{ "access_token": " ABC123 ", "token_type": "nośnik", "expires_in": 5183791}

„ABC123” będzie Twoim długowiecznym tokenem dostępu. Możesz go umieścić w narzędziu Debuger tokenu dostępu w celu weryfikacji. W sekcji „Wygasa” powinno być coś w stylu „2 miesiące”.

3. Uzyskaj identyfikator użytkownika

Korzystając z tokena dostępnego przez długi czas, wykonaj polecenie GET na adres

https://graph.facebook.com/v2.10/me?access_token= {long_lived_access_token}

idPole jest Twój identyfikator konta. Będziesz go potrzebować do następnego kroku.

4. Uzyskaj token stałego dostępu do strony

Złóż wniosek GET na adres

https://graph.facebook.com/v2.10/ {account_id} / account? access_token = {long_lived_access_token}

Odpowiedź JSON powinna zawierać datapole, w którym znajduje się tablica elementów, do których użytkownik ma dostęp. Znajdź element strony, z której chcesz uzyskać token stałego dostępu. To access_tokenpole powinno mieć token stałego dostępu. Skopiuj i przetestuj w Debugerze tokena dostępu . W polu „Wygasa” powinno być napisane „Nigdy”.

pączek
źródło
14
Facebook popsuł to, więc już nie działa. :-( Po kroku 1.5 powyżej (kliknięciu przycisku „Uzyskaj token dostępu”) w kolejnym oknie dialogowym pojawia się czerwone ostrzeżenie z informacją „Prześlij do przeglądu logowania - niektóre z poniższych uprawnień nie zostały zatwierdzone do użytku przez Facebook”, a także kłódka z napisem „To nie pozwala aplikacji na publikowanie na Facebooku” pojawia się w tym samym czasie poniżej. Dlatego należy wstawić nowy krok między krokami 1.5 a 1.6 powyżej, czytając „Wykonuj wiele żmudnych sh * t ze swoją aplikacją, następnie prześlij go do sprawdzenia, a następnie pomódl się i poczekaj. ":-( Czy ktoś wie, jak to obejść w przypadku czystej aplikacji testowej?
QuestionOverflow
10
Dla każdego, kto message: "(#100) Tried accessing nonexisting field (accounts) on node type (Page)", type: "OAuthException", code: 100 przejdzie do ostatniego kroku, a przeglądarka właśnie wróci: przejdź do debugera tokena dostępu FB i przetestuj swój długo-żywy_token_dostępu. Konsekwentnie zauważyłem, że po kilku minutach, jeśli wrócisz i ponownie sprawdzisz long_lived_access_token, debuger tokenu dostępu FB wskaże, że ten token jest trwały (wygasa: nigdy)
AdjunctProfessorFalcon
14
Przysięgam, gdybym nie przeczytał tej odpowiedzi, nadal waliłbym głową w ścianę krótkotrwałym żetonem ... Szkoda, że ​​ostatnia część nie działa ... Dostaję (#100) Tried accessing nonexisting field (accounts) on node type (Page)błąd ... Nie mogę przejść do kroku 5 ... Mimo to dziękuję ... LE: Sprawdź ostatnią część odpowiedzi udzielonej przez @Vlasec. Możesz uzyskać token stałego dostępu, wysyłając zapytanie / {pageId}? Fields = access_token & access_token = {long_lived_access_token}, więc problem został rozwiązany.
Mujnoi Gyula Tamas
15
Musiałem użyć tego do ostatniego kroku, aby uzyskać mój token stałego dostępu, ponieważ mówi, że „konta” nie istnieją, nawet dla wersji 2.7:https://graph.facebook.com/v2.7/{page_id}?fields=access_token&access_token={long_lived_access_token}
Reado
5
W ostatnim kroku otrzymuję następujący wyjątek {„error”: {„message”: „Error syntax \” Oczekiwany koniec ciągu zamiast \ „? \”. \ ”W znaku 11: access_toke \ u200c \ u200bn” , „type”: „OAuthException”, „code”: 2500, „fbtrace_id”: „A8 + gtSaShIO”}} Każdy wie, jak to rozwiązać ????
Lucy
89

Oto moje rozwiązanie wykorzystujące tylko Graph API Explorer i Access Token Debugger :

  1. Graph API Explorer:
    • Wybierz aplikację z menu rozwijanego w prawym górnym rogu
    • Wybierz „Uzyskaj token dostępu użytkownika” z menu rozwijanego (pole tokena dostępu) i wybierz wymagane uprawnienia
    • Skopiuj token dostępu użytkownika
  2. Access Token Debugger:
    • Wklej skopiowany token i naciśnij „Debuguj”
    • Naciśnij „Rozszerz token dostępu” i skopiuj wygenerowany długotrwały token dostępu użytkownika
  3. Graph API Explorer:
    • Wklej skopiowany token w pole „Token dostępu”
    • Złóż wniosek GET z „PAGE_ID? Fields = access_token”
    • Znajdź w odpowiedzi token stałego dostępu do strony (węzeł „access_token”)
  4. (Opcjonalnie) Debuger tokenu dostępu:
    • Wklej stały token i naciśnij „Debuguj”
    • „Wygasa” powinno być „Nigdy”

(Testowane z API w wersji 2.9-2.11, 3.0-3.1)

Obrabować
źródło
3
Nie ma przycisku „Rozszerz token dostępu” do naciśnięcia. Może to wyjęli.
Cesar Bielich,
4
Widzę przycisk „Przedłuż”
Eduardo,
2
Po rozszerzeniu tokena dostępu (krok 2) i ponownym debugowaniu go nigdy nie powinien wygasać. Możesz po prostu przejść kroki 3 i 4.
daniel_serretti
1
Dzięki za tę odpowiedź jest łatwiejsza do zrozumienia niż duża powyżej. To było naprawdę pomocne.
Paul Laffitte
2
Och, stary, jesteś w ogniu! Wielkie dzięki! Zmarnowałem tyle czasu, aby znaleźć tę opcję, ponieważ nie mogłem poprawnie debugować aplikacji!
Killuminati,
11

Oprócz zalecanych kroków w odpowiedzi Vlasec możesz także użyć:

chuycepeda
źródło
3
To już nie działa. Token trwa tylko godzinę
flashsnake
@flashsnake, czy faktycznie przetestowałeś to na wersji 2.8? debuger tokenów pokazuje Expires Never
Bizmate
Nie pamiętam Mogłem to przetestować.
flashsnake
11

Zrobiłem skrypt PHP, aby to ułatwić. Utwórz aplikację . W Graph API Explorer wybierz swoją aplikację i uzyskaj token użytkownika z uprawnieniami manage_pages i public_pages. Znajdź identyfikator swojej strony u dołu strony Informacje. Wypełnij zmienne konfiguracji i uruchom skrypt.

<?php
$args=[
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
];

echo generate_token($args);

function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/{$userid}/accounts?access_token={$longtoken}")); // get permanent token
    foreach($r->data as $d) if($d->id==$args['pageid']) return $d->access_token;
}
dw1
źródło
1
+1 Właśnie wypróbowałem i spośród wszystkich tych częściowo deprecjonujących odpowiedzi działa cuda! Podoba mi się ta odpowiedź, ponieważ przyszłe modyfikacje są łatwe z niewielką edycją tu i tam.
Siddhant Rimal
Przepraszam, nie mogłem edytować tej odpowiedzi. Tak więc dla Graph API 2.9 napisałem inną odpowiedź .
Siddhant Rimal,
Wygląda na to, że zmienili coś z wersją 2.9, ponieważ żaden z tych przykładów już nie działa
Cesar Bielich
10

Kolejna odpowiedź PHP, aby ułatwić życie. Zaktualizowano dla Facebook Graph API 2.9 . Wystarczy wypełnić i załadować.

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$userid}?fields=access_token&access_token={$longtoken}")); // get permanent token
    if($r->id==$args['pageid']) $finaltoken=$r->access_token;
    return $finaltoken;
}
?>

Dodatek: (alternatywnie)

Wykres 2.9 i następne, możesz pominąć wiele problemów związanych z uzyskaniem tokena o długim dostępie, po prostu klikając polecenie Rozszerz token dostępu na dole narzędzia Debuger tokenu dostępu , po debugowaniu tokena o krótkim dostępie. Uzbrojony w informacje o pageidi longlivedtoken, uruchom php poniżej, aby uzyskać token stałego dostępu.

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'longlivedtoken'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$args['pageid']}?fields=access_token&access_token={$args['longlivedtoken']}"));
return $r->access_token;
}
?>

Chociaż drugi kod pozwala zaoszczędzić wiele kłopotów, zalecam uruchomienie pierwszego kodu php, chyba że się spieszysz, ponieważ sprawdza on pageid i identyfikator użytkownika. Drugi kod nie zadziała, jeśli przez pomyłkę wybierzesz token użytkownika.

Dzięki dw1 i Rob

Siddhant Rimal
źródło
Nie ma przycisku Rozszerz token dostępu, czy coś brakuje?
Cesar Bielich,
@CesarBielich: Najpierw musisz debugować token krótkiego dostępu. Pojawia się poniżej wyników podczas debugowania krótkiego tokena aplikacji. Ponieważ go nie widzisz, musisz debugować token dostępu użytkownika. Pamiętaj, że ta odpowiedź nie dotyczy korzystania z tokena dostępu; można używać tylko tokena dostępu do aplikacji Tokeny dostępu użytkownika nie mogą być trwałe. Można je generować do długich tokenów.
Siddhant Rimal
1
@CesarBielich Myślę, że coś tutaj mylisz. Możesz tworzyć tokeny dostępu dla użytkowników, aplikacji i stron. Musisz wybrać aplikację , którą stworzyłeś, zamiast Graph API Explorerw polu Aplikacja, zanim będziesz mógł poprosić o token.
Siddhant Rimal
@CesarBielich: Użyj pierwszej metody, jeśli druga jest dla Ciebie zbyt myląca. Po prostu wypełniasz pola wejściowe w pierwszym i wszystko dzieje się automatycznie :)
Siddhant Rimal
Przepraszam, że komentowałem inny post, który właśnie napisałem ostatniej nocy lol. Tak, z jakiegoś powodu nie mogłem zmusić twojego do pracy i sprawić, żebym nigdy nie wygasł. Musiałem usunąć v2.9drugi telefon i to zadziałało dla mnie. Wierd
Cesar Bielich
6

Próbowałem tych kroków: https://developers.facebook.com/docs/marketing-api/access#graph-api-explorer

Uzyskaj token stałego dostępu do strony

  • Idź do Graph API Explorer
  • Wybierz aplikację w aplikacji
  • Wklej długotrwały token dostępu do tokena dostępu
  • Obok opcji Token dostępu wybierz stronę, dla której chcesz uzyskać token dostępu. Token dostępu pojawia się jako nowy ciąg.
  • Kliknij i, aby zobaczyć właściwości tego tokena dostępu
  • Kliknij ponownie przycisk „Otwórz w narzędziu tokenu dostępu”, aby otworzyć narzędzie „Debuger tokenu dostępu”, aby sprawdzić właściwości

Jedna wskazówka, działało to tylko dla mnie, gdy językiem strony jest angielski .

fabiański
źródło
1
TEN FACET!!! 5 wirtualnych piw. Działa to zastępując krok 5 zatwierdzonej odpowiedzi. wersja graficzna 2.8
Korzeń -
1
Zmarnowałem tygodnie na możliwość korzystania z interfejsu API Facebooka. Jest to do tej pory najbardziej zagmatwany i niespójny żeton, z jakim się spotkałem. To rozwiązanie nadal działa idealnie. Październik 2017
użytkownik919426
4

Jeśli żądasz tylko danych strony, możesz użyć tokena dostępu do strony. Musisz tylko raz autoryzować użytkownika, aby uzyskać token dostępu; przedłuż go do dwóch miesięcy, a następnie poproś o token strony. Wszystko to wyjaśniono w scenariuszu 5 . Zauważ, że uzyskany token dostępu do strony jest ważny tylko tak długo, jak długo token dostępu użytkownika jest ważny.

phwd
źródło
Przepraszam, może nie byłem wystarczająco jasny. Czytałem o tokenach, muszę tylko dowiedzieć się, jak poprosić użytkownika o pozwolenie i przenieść token do mojej aplikacji. Wygląda na to, że muszę stworzyć „aplikację” na Facebooku, której jedynym celem jest uzyskanie uprawnień, prawda?
Vlasec,
1
@Viasec Prawidłowy jedyny sposób na uzyskanie tokena dostępu to aplikacja, jak wyjaśniono tutaj developers.facebook.com/docs/facebook-login
phwd
Dzięki, musiałem to jakoś zignorować, zakładałem, że jest gdzieś w sekcji API, co było złe. Spojrzę na to, mam nadzieję, że to odpowiada na moje pytanie.
Vlasec,
4

Otrzymując token stałego dostępu wykonałem ponad 5 kroków, o których wspomniał Donut . Jednak w 5. kroku podczas generowania tokena stałego dostępu zwraca on token długoterminowego dostępu (który jest ważny przez 2 miesiące), a nie token stałego dostępu (który nigdy nie wygasa). Zauważyłem, że obecna wersja Graph API to V2.5. Jeśli próbujesz uzyskać token stałego dostępu za pomocą V2.5, daje to token dostępu długowiecznego. Spróbuj wykonać wywołanie API za pomocą V2.2 (jeśli nie możesz zmienić wersji w eksploratorze graficznym interfejsu API, naciśnij wywołanie API https: //graph.facebook.com/v2.2/ { account_id } / account? access_token = {long_lived_access_token} w nowej karcie z V2.2) wtedy dostaniesz token stałego dostępu (który nigdy nie wygasa)

baji shaik
źródło
Wracając do wersji API w celu uzyskania wyników, w przyszłości znalazłem więcej pracy, zwłaszcza że wersja API wygasa po pewnym czasie.
SlickRemix 17.09.16
zwraca null :( Jak otrzymujemy token dostępu do strony?
Nancy thakkar,
3

Oprócz wspomnianych metod warto wspomnieć, że w przypadku aplikacji serwer-serwer można również użyć tej formy tokena stałego dostępu: app_id | app_secret Ten typ tokenu dostępu nazywa się tokenem aplikacji. Zasadniczo można go używać do wywoływania interfejsu API Graph i zapytania o publiczne węzły w zapleczu aplikacji. Wspomniano tutaj: https://developers.facebook.com/docs/facebook-login/access-tokens

azec-pdx
źródło
1
Czy pozwala to na jakikolwiek dostęp do stron? Myślę, że tak nie jest i w takim przypadku tak naprawdę nie odpowiada na pytanie.
Vlasec
@Vlasec Umożliwia dostęp do komentarzy do publicznego postu
Ali Gajani
1
Choć dla niektórych może to wystarczyć, nie odpowiada na pytanie.
Vlasec
2

Dzięki @donut udało mi się zdobyć nigdy nie wygasający token dostępu w JavaScript.

// Initialize exchange
fetch('https://graph.facebook.com/v3.2/oauth/access_token?grant_type=fb_exchange_token&client_id={client_id}&client_secret={client_secret}&fb_exchange_token={short_lived_token}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Get the user data
    fetch(`https://graph.facebook.com/v3.2/me?access_token=${json.access_token}`)
    .then((data) => {
        return data.json();
    })
    .then((userData) => {
        // Get the page token
        fetch(`https://graph.facebook.com/v3.2/${userData.id}/accounts?access_token=${json.access_token}`)
        .then((data) => {
            return data.json();
        })
        .then((pageToken) => {
            // Save the access token somewhere
            // You'll need it at later point
        })
        .catch((err) => console.error(err))
    })
    .catch((err) => console.error(err))
})
.catch((err) => {
    console.error(err);
})

a następnie użyłem zapisanego tokena dostępu w ten sposób

fetch('https://graph.facebook.com/v3.2/{page_id}?fields=fan_count&access_token={token_from_the_data_array}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Do stuff
})
.catch((err) => console.error(err))

Mam nadzieję, że ktoś może przyciąć ten kod, ponieważ jest trochę niechlujny, ale był to jedyny sposób, w jaki mogłem wymyślić.

Vladimir Jovanović
źródło
2

Jeśli masz aplikację na Facebooku, możesz spróbować z app-id i app-secret.

Lubić :

access_token={your-app_id}|{your-app_secret}

nie będzie wymagać częstej zmiany tokena.

Niko Jojo
źródło
1

Osiągnięto limit żądań aplikacji (# 4) - FB API v2.1 i wyższy

Ta odpowiedź doprowadziła mnie do „ostatecznej odpowiedzi dla nas”, więc jest bardzo powiązana, dlatego dołączam ją tutaj. Chociaż jest to związane z powyższym, jest inne i wydaje się, że FB uprościło ten proces.

Nasze liczenie udostępniania w naszej witrynie przestało działać, gdy FB przerzuciło interfejs API do wersji 2.1. W naszym przypadku mieliśmy już aplikację FB i NIE korzystaliśmy z logowania FB. Musieliśmy więc zdobyć token FB APP, aby wysyłać nowe żądania. To jest na 23 sierpnia 2016.

  1. Idź do: https://developers.facebook.com/tools/explorer
  2. Wybierz wersję interfejsu API, a następnie użyj polecenia GET i wklej następujące elementy:

    /oauth/access_token?client_id={app-id}&client_secret={app-secret}&grant_type=client_credentials
    

    Będziesz chciał pobrać identyfikator aplikacji i sekret aplikacji ze strony aplikacji. Główna strona programisty FB Apps

  3. Uruchom zapytanie dotyczące wykresu, a zobaczysz:

    {
       "access_token": "app-id|app-token",
       "token_type": "bearer"
    }
    

    Gdzie

    „identyfikator aplikacji”
    i
    „token aplikacji”
    będzie Twoim identyfikatorem aplikacji ze strony aplikacji FB i wygenerowaną właśnie otrzymaną funkcją HASH aplikacji FB.

  4. Następnie przetestuj swój nowy token dostępu do aplikacji: tester tokenów dostępu FB

  5. Powinieneś zobaczyć, wklejając

    „token aplikacji”
    do testera tokenów, token oparty na jednej aplikacji bez daty / godziny wygaśnięcia.

W naszym przypadku korzystamy z FB js sdk, więc zmieniliśmy nasze wywołanie, aby było tak (pamiętaj, że TYLKO pobiera liczbę udziałów, a nie łączoną liczbę udziałów i komentarzy, tak jak kiedyś) :

FB.api(
    '/','GET',{
    // this is our FB app token for our FB app 
        access_token: FBAppToken,
        "id":"{$shareUrl}","fields":"id,og_object{ engagement }"
}

To działa teraz poprawnie. Wymagało to wielu poszukiwań i oficjalnego zgłoszenia błędu z FB, aby potwierdzić, że musimy zacząć wysyłać tokeny do interfejsu API FB. Na marginesie poprosiłem, aby (FB) dodali wskazówkę do kodu błędu (# 4), który wspomina o tokenizowanym żądaniu.

Właśnie dostałem kolejny raport od jednego z naszych deweloperów, że liczba komentarzy FB jest również zepsuta z powodu nowej potrzeby tokenizowanych żądań, więc odpowiednio go zaktualizuję.

wittmason
źródło
1
Zawsze był to użytkownik aplikacji, który logował się i zezwalał aplikacji na dostęp. W każdym razie nie wydaje się, aby tworzył token dostępu do strony, więc myślę, że nie jest to prawidłowa odpowiedź na pytanie. Ciekawe - może zrób własne pytanie?
Vlasec
1

Wiele z tych przykładów nie działa, nie jestem pewien, czy to z powodu wyjścia 2.9v, ale waliłem głową. W każdym razie wziąłem wersję @ dw1 i trochę ją zmodyfikowałem przy pomocy wideo @KFunk i sprawiłem, że działała dla mnie w wersji 2.9. Mam nadzieję że to pomoże.

$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r = json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/{$args['pageid']}?fields=access_token&access_token={$longtoken}")); // get user id
    $finaltoken=$r->access_token;
    return $finaltoken;
}
Cesar Bielich
źródło
Fajny fragment, ale to pytanie nie dotyczy tego, jak zrobić go w PHP, ale jak korzystać z samego interfejsu API, co można również zrobić w Javie lub .NET. Na przykład musiałem to zrobić w Javie. Pseudokod lub przewodnik krok po kroku byłyby bardziej przydatne dla tych, którzy nie używają PHP.
Vlasec
2
@Vlasec Twierdzę, że ten fragment kodu PHP jest bardzo zbliżony do dowolnego pseudo kodu i jest bardzo łatwy do zrozumienia. Casar używa tylko interfejsów API, które są już dostępne na Facebooku. Reszta rzeczy jest oczywista.
Siddhant Rimal,
0

Od kwietnia 2020 r. Moje dotychczasowe stałe tokeny stron zaczęły wygasać od 1 do 12 godzin. Zacząłem używać tokenów użytkownika z manage_pagesuprawnieniami do osiągnięcia poprzedniego celu (odpytywanie o zdarzenia strony). Te tokeny wydają się być trwałe.

Stworzyłem skrypt Pythona na podstawie informacji znalezionych w tym poście, hostowany na github.com/k-funk/facebook_permanent_token , aby śledzić, jakie parametry są wymagane i jakie metody uzyskania stałego tokena działają.

KFunk
źródło
-1

Znalazłem odpowiedź, która odnosi się do tego narzędzia, które naprawdę bardzo pomogło.

Mam nadzieję, że ta odpowiedź będzie nadal aktualna podczas czytania.

Bamboomy
źródło
DOBRZE. Czy odpowiedź pączka nadal działa, czy wymaga dodatkowego kroku?
Vlasec