it-swarm.com.ru

Получить токен доступа к странице с Facebook API 5.0 PHP

Мне нужно размещать сообщения на странице в Facebook. В частности, я хочу опубликовать через cron.

Вот что говорят API-документы:

Токен доступа к странице - эти токены доступа аналогичны токенам доступа пользователя, за исключением того, что они предоставляют разрешение API-интерфейсам, которые читают, записывают или изменяют данные, принадлежащие странице Facebook. Чтобы получить токен доступа к странице, необходимо начать с получения токена доступа пользователя и запроса разрешения manage_pages. Получив токен доступа пользователя, вы получите токен доступа к странице через Graph API.

Как я могу получить токен доступа пользователя и страницы без обратного вызова страницы? Это возможно?

6
S. Délas

То, что вам нужно, это Extended Page Token, он действителен навсегда. Вы получаете один, как это:

  • Авторизуйтесь с разрешением manage_pagespublish_pages, если вы хотите опубликовать как страницу позже), чтобы получить токен пользователя
  • Расширьте токен пользователя
  • Используйте /me/accounts?fields=access_token с токеном расширенного пользователя, чтобы получить список всех ваших страниц с расширенными токенами страницы, или используйте /page-id?fields=access_token, чтобы получить токен расширенной страницы для конкретной страницы.

Информация обо всех токенах и о том, как продлить токен пользователя:

9
luschn

PHP API V5

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

  1. Должен иметь логин на Facebook, я использовал getRedirectLoginHelper
  2. Установить переменную сеанса с полученным токеном доступа пользователя в файле обратного вызова $_SESSION['fb_access_token'] = (string) $accessToken;

$fbApp  = new Facebook\FacebookApp( 'xxx', 'xxx', 'v2.7' );
$fb      = new Facebook\Facebook( array(
    'app_id' => 'xxx',
    'app_secret' => 'xxx',
    'default_graph_version' => 'v2.7'
) );
$requestxx = new FacebookRequest(
    $fbApp,
    $_SESSION['fb_access_token'],//my user access token
    'GET',
    '/{page-id}?fields=access_token',
    array( 'ADMINISTER' )
);
$responset  = $fb->getClient()->sendRequest( $requestxx );
$json           = json_decode( $responset->getBody() );
$page_access    = $json->access_token;

//posting to page   
$requesty = new FacebookRequest(
    $fbApp,
    $page_access ,
    'POST',
    '/{page-id}/feed?message=Hello fans YYYYYYYYYYYYYYY'
);
$response = $fb->getClient()->sendRequest( $requesty );
var_dump( $response );
3
Fara

Вы можете получить токен страницы следующим образом:

$response = $fb->get('/'.$pageId.'?fields=access_token', (string)$accessToken);
$json = json_decode($response->getBody());
$page_token = $json->access_token;
$response = $fb->post('/'.$pageId.'/feed', $fbData, $page_token);
2
joseantgv

У меня есть только код JavaScript, но как только у вас есть токен доступа, вы можете получить страницы, которыми может управлять данный пользователь. Он будет содержать токен доступа к странице для каждого из них:

jQuery.ajax({type: "GET",
                url: "https://graph.facebook.com/v2.2/me/accounts?access_token=" + userToken,
                async: false,
                data: jsonRequest,
                dataType: "json",
                cache: false,
                success: function(data)
                {

Данные возвращаются как:

{
  "data": [
    {
      "access_token": "CAACni8TcBB0B...cZBJfwZDZD",
      "category": "Computers/Technology",
      "name": "abc",
      "id": "...",
      "perms": [
        "ADMINISTER",
        "EDIT_PROFILE",
        "CREATE_CONTENT",
        "MODERATE_CONTENT",
        "CREATE_ADS",
        "BASIC_ADMIN"
      ]
    },
    {
      "access_token": "CAA...ZDZD",
      "category": "App Page",
      "name": "xyz",
      "id": "....",
      "perms": [
        "ADMINISTER",
        "EDIT_PROFILE",
        "CREATE_CONTENT",
        "MODERATE_CONTENT",
        "CREATE_ADS",
        "BASIC_ADMIN"
      ]
    }
  ],

access_token - это ваш токен страницы. Вы можете легко преобразовать вышеуказанный запрос в PHP.

0
Axel Amthor