Как можно получить долгосрочный токен для публикации на фан-странице Facebook с сервера

У меня есть бизнес-страница в Facebook (известная как фан-страница в общедоступном Facebook).

я бы хотел post to that Page всякий раз, когда пользователь выполняет определенное действие в моем приложении. Я хочу публиковать как саму страницу, а не как пользователя (то есть из моего личного аккаунта). Сообщение будет приходить с моего внешнего сервера (я использую restFB).

Я прошел процедуру авторизации своего личного аккаунта с соответствующими manage_pages разрешения для страницы. Я также получил токен доступа к странице. Я даже смог опубликовать на этой странице как страницу, как я хотел. Проблема в том, что токен, который я получаю (через их инструмент для разработки графиков инструментов), имеет срок действия один час. Мне нужно, чтобы это длилось гораздо дольше, предпочтительно навсегда.

Я просматривал Интернет, включая SO, чтобы найти ответ, и большинство сообщений указывают на ужасные документы FB или дают смутные ссылки на подключение моего внешнего приложения к приложению facebook и публикацию через него. Я пытался заставить это работать, но меня смущает весь процесс, прямо скажем (что такое адрес обратного вызова, например?).

Во всяком случае, я хотел бы видеть пошаговые инструкции на простом английском языке на getting a long lasting access token который я могу использовать для публикации из одного приложения на фан-странице Facebook.

Пожалуйста, не обращайтесь к документации FB. Это ужасно. Я прошел через это по крайней мере дюжину раз.

Спасибо.

2 ответа

Решение

Вот несколько шагов, которые вы можете выполнить, чтобы получить токен для своей фан-страницы, который никогда не истекает:

  1. Во-первых, вам нужно получить токен доступа пользователя с длительным сроком действия (срок действия которого истекает через 2 месяца). Чтобы получить это, сделайте следующий звонок:

    GET /oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={short-lived-token}
    

    Подробнее здесь. Дайте мне знать, если у вас возникли трудности с этим.

  2. Получите токен доступа с истекающим сроком действия для своей страницы, используя токен, полученный на предыдущем шаге (не обычный токен, в этом основное отличие):

    $facebook->api("/PAGE_ID?fields=access_token");
    

Таким образом, концепция заключается в том, что для получения долгоживущего токена страницы вы должны использовать долгоживущий токен пользователя во время вызова.

@Shadowfax совершенно прав. Просто для завершения рабочего процесса:

  1. Получите краткосрочного пользователя access_token с помощью логина на Facebook и manage_pages разрешение.
  2. Отправить этот краткосрочный пользователь access_token на ваш сервер
  3. С сервера сделайте запрос @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,

    Вы должны сделать этот запрос с сервера, потому что он содержит секретный ключ вашего приложения.

  4. С сервера вы теперь можете запрашивать facebook, заменив пользователя access_token на эту долгоживущую версию.

  5. С сервера получите страницу 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, этот долгоживущий токен страницы будет существовать вечно, пока пользователь (вы) не отменит разрешение вашего приложения.

Другие вопросы по тегам