Токен доступа Facebook для страниц


115

У меня есть страница в Facebook, и я хочу кое-что получить от нее. Во-первых, это каналы, и из того, что я прочитал, они общедоступны (нет необходимости в access_token). Но я также хочу получать события ... а они не являются общедоступными и нуждаются в access_token.

Я не хочу, чтобы пользователь входил в систему в Facebook или что-нибудь в этом роде. Я просто хочу передать все данные с этой единственной страницы. Вот почему я уже отбросил многие примеры, которые я нашел здесь, и один на https://developers.facebook.com/blog/post/500/ , потому что они хотят, чтобы пользователь вошел в систему или требует каких-либо действий пользователя, которые меня не интересуют.

Я хочу, чтобы мое приложение Facebook имело полную авторизацию и access_token для передачи данных с этой страницы Facebook, которой я владею (admin). Это возможно? Я уже много чего пробовал, но ничего не работает.

Я попытался щелкнуть по этому адресу : https://www.facebook.com/dialog/oauth?client_id=150635421702954&redirect_uri=http://MY_URL/&scope=manage_pages&response_type=token&fields=access_token - изменение MY_URL на мой сайт редактировать и каждый раз запрашивать авторизацию для редактирования страница принадлежит мне. Даже не будучи тем, что я хочу, я щелкнул, но не получил взамен access_token ...


Чтобы получить события, я делаю это сейчас (срок действия access_token истекает очень часто): 1 - Получить токен из Graph Explorer 2 - Вставить его в мой код ниже: 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? $ ("# список"). append ('<li>' + d [i] .message + '</li>'): ''; // много чего другого, вы поняли}}); `
bsides

1
Вы можете получить постоянный токен: stackoverflow.com/questions/17197970/…
Джош,

Ответы:


269
  1. Перейдите в Graph API Explorer
  2. Выберите свое приложение в раскрывающемся меню
  3. Нажмите "Получить токен доступа"
  4. Выберите manage_pagesразрешение (возможно, вам user_eventsтоже понадобится разрешение, не уверен)
  5. Теперь откройте me/accountsсоединение и скопируйтеaccess_token
  6. Нажмите на идентификатор своей страницы
  7. Добавьте страницы access_tokenв поля GET
  8. Вызов соединения вы хотите (например: PAGE_ID/events)

1
Делая это, я могу вызывать соединения на всех своих страницах, используя токен страницы только для одной из них. Это не так? Есть ли способ получить токен только для одной конкретной страницы, который не работает на других страницах?
andresp

112
Я лазил по горам и плавал в океанах, просто ищу ответ. Спасибо.
IMB

15
Этот процесс больше не работает, поскольку сгенерированный токен доступа истекает, когда вы выходите из системы по какой-либо причине.
coneybeare 06

1
@coneybeare, пожалуйста, обратитесь к этому документу о том, как продлить токен доступа
ifaour

1
Я получаю пустой результат. Имеет ли значение, если это страница приложения?
Макс

16

См. Здесь, если вы хотите предоставить приложению Facebook постоянный доступ к странице (даже если вы / владелец приложения вышли из системы):

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

« Срок действия токена доступа к приложению не истекает, если вы не обновите секрет приложения в настройках приложения».


6
Это не помогает получать события для закрытой страницы.
Sinan

2
Это все еще правда ?!
jeromej 07

5

Документация для этого хороша, если не сказать немного трудной.

Facebook Graph API - токены страницы

После инициализации fbgraph узла вы можете запустить:

var facebookAccountID = yourAccountIdHere 

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

и получите ответ JSON с токеном, который вы хотите получить, расположенный по адресу:

res.data[0].access_token
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.