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

У меня есть бизнес-страница в Facebook (известная как Фан-страница в народном языке Facebook).

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

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

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

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

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

Спасибо.

Ответы

Ответ 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} 
    

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

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

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

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

Ответ 2

@Shadowfax является полным правом. Чтобы завершить рабочий процесс:

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