Как можно получить долгосрочный токен для публикации на фан-странице Facebook с сервера
У меня есть бизнес-страница в Facebook (известная как фан-страница в общедоступном Facebook).
я бы хотел post to that Page
всякий раз, когда пользователь выполняет определенное действие в моем приложении. Я хочу публиковать как саму страницу, а не как пользователя (то есть из моего личного аккаунта). Сообщение будет приходить с моего внешнего сервера (я использую restFB).
Я прошел процедуру авторизации своего личного аккаунта с соответствующими manage_pages
разрешения для страницы. Я также получил токен доступа к странице. Я даже смог опубликовать на этой странице как страницу, как я хотел. Проблема в том, что токен, который я получаю (через их инструмент для разработки графиков инструментов), имеет срок действия один час. Мне нужно, чтобы это длилось гораздо дольше, предпочтительно навсегда.
Я просматривал Интернет, включая SO, чтобы найти ответ, и большинство сообщений указывают на ужасные документы FB или дают смутные ссылки на подключение моего внешнего приложения к приложению facebook и публикацию через него. Я пытался заставить это работать, но меня смущает весь процесс, прямо скажем (что такое адрес обратного вызова, например?).
Во всяком случае, я хотел бы видеть пошаговые инструкции на простом английском языке на getting a long lasting access token
который я могу использовать для публикации из одного приложения на фан-странице Facebook.
Пожалуйста, не обращайтесь к документации FB. Это ужасно. Я прошел через это по крайней мере дюжину раз.
Спасибо.
2 ответа
Вот несколько шагов, которые вы можете выполнить, чтобы получить токен для своей фан-страницы, который никогда не истекает:
Во-первых, вам нужно получить токен доступа пользователя с длительным сроком действия (срок действия которого истекает через 2 месяца). Чтобы получить это, сделайте следующий звонок:
GET /oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={short-lived-token}
Подробнее здесь. Дайте мне знать, если у вас возникли трудности с этим.
Получите токен доступа с истекающим сроком действия для своей страницы, используя токен, полученный на предыдущем шаге (не обычный токен, в этом основное отличие):
$facebook->api("/PAGE_ID?fields=access_token");
Таким образом, концепция заключается в том, что для получения долгоживущего токена страницы вы должны использовать долгоживущий токен пользователя во время вызова.
@Shadowfax совершенно прав. Просто для завершения рабочего процесса:
- Получите краткосрочного пользователя access_token с помощью логина на Facebook и
manage_pages
разрешение. - Отправить этот краткосрочный пользователь access_token на ваш сервер
С сервера сделайте запрос @Shadowfax:
GET /oauth/access_token? grant_type=fb_exchange_token&client_id={your-app-id}& client_secret={your-app-secret}&fb_exchange_token={short-lived-user-access_token}
с хозяином
graph.facebook.com
и порт443
,Вы должны сделать этот запрос с сервера, потому что он содержит секретный ключ вашего приложения.
С сервера вы теперь можете запрашивать facebook, заменив пользователя access_token на эту долгоживущую версию.
С сервера получите страницу access_token, используя ваш давний пользовательский access_token, либо запросив учетную запись пользователя:
GET /{user-id}/accounts?access_token={long-live-token}
Вы получите все страницы пользователя с их идентификатором и access_token.
Или вы можете напрямую запросить конкретную страницу, если вы уже знаете ее page_id
GET /{page-id}/?fields=access_token&access_token={long-live-token}
Как сказал @Shadowfax, этот долгоживущий токен страницы будет существовать вечно, пока пользователь (вы) не отменит разрешение вашего приложения.