Token dostępu do Facebooka dla stron

115

Mam stronę na Facebooku, z której chcę coś wyciągnąć. Pierwsza rzecz to kanały iz tego co przeczytałem są publiczne (nie ma potrzeby access_token). Ale chcę również uzyskać zdarzenia ... a nie są one publiczne i potrzebują access_token.

Nie chcę, aby użytkownik logował się na Facebooku ani nic w tym stylu. Chcę tylko przesłać wszystkie dane, które mogę z tej jedynej strony. Dlatego odrzuciłem już wiele przykładów, które znalazłem tutaj i ten pod adresem https://developers.facebook.com/blog/post/500/ , ponieważ chcą, aby użytkownik się zalogował lub wymagają działania użytkownika, nie jestem zainteresowany.

Chcę, aby moja aplikacja na Facebooku miała pełną autoryzację i access_token do przesyłania danych z tej jednej strony na Facebooku, której jestem właścicielem (admin). czy to możliwe? Próbowałem już wielu rzeczy, ale wydaje się, że nic nie działa.

Próbowałem kliknąć tutaj: https://www.facebook.com/dialog/oauth?client_id=150635421702954&redirect_uri=http://MY_URL/&scope=manage_pages&response_type=token&fields=access_token - zmiana MY_URL na moją witrynę i żąda autoryzacji do edycji każdego posiadam stronę. Nawet nie będąc tym, czego chcę, kliknąłem, ale w zamian nie otrzymałem access_token ...

bsides
źródło
Aby uzyskać zdarzenia, robię to teraz (access_token często traci ważność): 1 - Pobierz token z Graph Explorer 2 - Wklej go w moim kodzie poniżej: var authToken = 'THE_CODE_I_GOT'; var feedQuery = 'graph.facebook.com/MY_PAGE_ID/feed'; var feedURL = feedQuery +'?access_token='+ authToken +'&callback=?'; $.getJSON(feedURL,function(data){ var d = data.data; for (i = 0; i <d.length; i ++) {d [i] .message? $ ("# lista"). append ('<li>' + d [i] .message + '</li>'): ''; // wiele innych rzeczy, rozumiesz}}); `
bsides,
1
Możesz zdobyć stały token: stackoverflow.com/questions/17197970/…
Josh

Odpowiedzi:

269
  1. Przejdź do Graph API Explorer
  2. Wybierz swoją aplikację z menu rozwijanego
  3. Kliknij „Uzyskaj token dostępu”
  4. Wybierz manage_pagespozwolenie (możesz też potrzebować user_eventspozwolenia, nie jestem pewien)
  5. Teraz uzyskaj dostęp do me/accountspołączenia i skopiuj swoją stronęaccess_token
  6. Kliknij identyfikator swojej strony
  7. Dodaj stronę access_tokendo pól GET
  8. Zadzwoń na wybrane połączenie (np . PAGE_ID/events:)
ifaour
źródło
1
W ten sposób mogę wywoływać połączenia na wszystkich moich stronach, używając tokenu strony tylko jednej z nich. Czy to nie jest złe? Czy istnieje sposób na uzyskanie tokena tylko dla jednej określonej strony, która nie działa na innych stronach?
andresp
112
Wspinam się po górach i pływam po oceanach, po prostu szukam odpowiedzi. Dziękuję Ci.
IMB
15
Ten proces już nie działa, ponieważ wygenerowany token dostępu wygasa po wylogowaniu z dowolnego powodu.
coneybeare
1
@coneybeare, zapoznaj się z tym dokumentem, aby dowiedzieć się, jak przedłużyć token dostępu
ifaour
1
Ciągle otrzymuję pusty wynik. Czy to ma znaczenie, jeśli jest to strona aplikacji?
Max
16

Zobacz tutaj, jeśli chcesz przyznać aplikacji Facebooka stały dostęp do strony (nawet jeśli Ty / właściciel aplikacji jesteście wylogowani):

http://developers.facebook.com/docs/opengraph/using-app-tokens/

„Token dostępu do aplikacji nie wygasa, dopóki nie odświeżysz klucza tajnego aplikacji w ustawieniach aplikacji”.

Robin Layfield
źródło
6
Nie pomaga to w pobieraniu wydarzeń dla strony z ograniczeniami.
Sinan
2
Czy to nadal prawda ?!
jeromej
5

Dokumentacja na ten temat jest dobra, jeśli nie trochę trudna do znalezienia.

Facebook Graph API - Tokeny stron

Po zainicjowaniu fbgraph węzła możesz uruchomić:

var facebookAccountID = yourAccountIdHere 

graph
.setOptions(options)
.get(facebookAccountId + "/accounts", function(err, res) {
  console.log(res); 
});

i otrzymaj odpowiedź JSON z tokenem, który chcesz pobrać, znajdującym się pod adresem:

res.data[0].access_token
Anthony
źródło