Постинг в FB

Тема в разделе "Как сделать...", создана пользователем Genk0, 12 авг 2015.

Статус темы:
Закрыта.
  1. Genk0

    Genk0

    Регистр.:
    2 июн 2010
    Сообщения:
    10
    Симпатии:
    10
    С ВК разобрался быстро, все по человечески написано, с FB какая то дрянь, не могу элементарно получить тот же сраный токен.
    В самописном движке при создании новости нужно прикрутить постинг в FB (в ВК уже сделал)
    Читал АПИ, пробовал тучу древних скриптов, что постят в сети, FB часто меняет свое АПИ, то что-то нужно дописать, то что-то убрать чтобы авторизоваться.
    В общем помогите, может кто писал, хотя бы получение токена на автомате, с самим постингом уже думаю разберусь.
     
  2. Aglok

    Aglok ∞³

    Регистр.:
    9 янв 2012
    Сообщения:
    162
    Симпатии:
    46
    Делал получение token через javascript sdk, потом через cookie грабил на php.
    1. C помощью js инициализируем facebook app. Sdk создаст куку.
    Код:
         
    window.fbAsyncInit = function() {
            FB.init({
              appId      : 'вставить свой код app',
              cookie:      true,
              version    : 'v2.4'
            });
          };
    
          (function(d, s, id){
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) {return;}
            js = d.createElement(s); js.id = id;
            js.src = "//connect.facebook.net/en_US/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
          }(document, 'script', 'facebook-jssdk'));
    2. Можно теперь ловить любым php скриптом. В данном случае sdk предлагает свой метод
    $fb->getJavaScriptHelper(); А так же есть общий класс от куда все методы берут данные от твоём app это $fb = new Facebook\Facebook([...]);
    Для этого необходимо указать секретный ключ и app-id, по которому метод будет расшифровывать token.
    Код:
     
    require_once __DIR__ . '/vendor/autoload.php';// тут подключаются библиотеки
      $fb = new Facebook\Facebook([
      'app_id' => 'вставить свой код app',
      'app_secret' => 'вставить свой код app секрет',
      'version' => 'v2.4',
      ]);
    
    $helper = $fb->getJavaScriptHelper();//Метод получает из куки зашифрованный token
    
    try {
      $accessToken = $helper->getAccessToken();//расшифровка токена
    
    } catch(Facebook\Exceptions\FacebookResponseException $e) {
      // When Graph returns an error
      echo 'Graph returned an error: ' . $e->getMessage();
      exit;
    } catch(Facebook\Exceptions\FacebookSDKException $e) {
      // When validation fails or other local issues
      echo 'Facebook SDK returned an error: ' . $e->getMessage();
      exit;
    }
    
    if (!isset($accessToken)) {
    
      echo 'No cookie set or no OAuth data could be obtained from cookie.';
      exit;
    }
    
    // Logged in
    echo '<h3>Access Token</h3>';
    var_dump($accessToken->getValue());//вывод значения
    
    $_SESSION['fb_access_token'] = (string) $accessToken;//И токен запичывается в куки
    
    3. Token у тебя в куке. Теперь ты можешь делать постинг своих новостей через rss или на прямую через http ссылки. Можно делать этот как js-ajax, так и через post запрос php на прямую. В зависимости как у тебя устроен движок.
     
    Genk0 нравится это.
Статус темы:
Закрыта.