Кнопка «Мне нравится» на странице фотографии - PullRequest
3 голосов
/ 25 октября 2011

Можете ли вы рассказать мне пошагово, как я могу сделать кнопку «Мне нравится» на моем сайте (php), чтобы понравиться фотографию страницы на Facebook?

Я знаю, что должен использовать API GRAPH и должен сделатьPOST через HTTP к / likes .. но я не знаю, как я могу это сделать с помощью PHP-кода.

У кого-нибудь есть пример?

Спасибо

Ответы [ 3 ]

5 голосов
/ 27 октября 2011

Пока вы получили разрешение publish_stream от пользователя, вам может понравиться любая фотография, которая вам нужна. Если вы пытаетесь добавить фотографию в качестве страницы, убедитесь, что у вас есть access_token для этой страницы (получено через соединение /accounts в учетной записи пользователя).

Если у вас есть токен доступа, то все равно, что просто ввести HTTP POST для URL, который выглядит примерно так:

https://graph.facebook.com/PHOTO_ID/likes?access_token=ACCESS_TOKEN

Photo_ID = удостоверение личности с фотографией в Facebook

Access_Token = Токен доступа, полученный из Facebook с разрешения publish_stream.

UPDATE


Пример кода PHP на основе Форма PHP CURL Post

<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/PHOTO_ID/likes");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);

$data = array(
    'Access_Token' => 'token_value'
);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

Я бы проверил это, хотя я не уверен, насколько он точен, поскольку я обычно не пишу код PHP. В любом случае сообщение должно быть необработанным HTTP POST запросом.

2 голосов
/ 27 октября 2011

Фабио, вот фрагмент поста php, который мне удалось получить.Snippet включает в себя curl для получения токена доступа к приложению и сообщение API для создания объекта, в данном случае это сообщение в моем приложении.

  • Пример сообщения находится здесь: Показывает понравившийся пост

https://shawnsspace.com/plugins/TimeLinePost.php?pageid=135669679827333&postid=135669679827333_151602784936066&type=feed&fh=750

Получение токена доступа к приложению.

function GetCH(){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT_MS,20000);
if(substr($url,0,8)=='https://'){
    // The following ensures SSL always works. A little detail:
    // SSL does two things at once:
    //  1. it encrypts communication
    //  2. it ensures the target party is who it claims to be.
    // In short, if the following code is allowed, CURL won't check if the 
    // certificate is known and valid, however, it still encrypts communication.
    curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_ANY);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
}
$sendCH = curl_exec($ch);
curl_close($ch);
return $sendCH;
};
$app_access_token = GetCH();   

Поиск URL-адреса для параметра postid, а затем идентификатор id

  if($_GET['postid']){
  $postid = $_GET['postid'];
  }else{
  $postid = '135669679827333_151602784936066';
  }

    if($user){
 $pageLike = $facebook->api('/'.$postid.'/likes?access_token='.$access_token.'&method=post', 'POST');
}
1 голос
/ 27 октября 2011

Вы можете получить разрешения, создав массив разрешений для URL входа в систему.ниже я запрашиваю read_stream, publish_stream, publish_actions, offline_access в области для разрешений.

ПРИМЕЧАНИЕ: токен доступа к приложению необходим для URL выхода из системы.

    <?php
    $url = (!empty($_SERVER['HTTPS'])) ? 'https://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
        require './src/facebook.php';
    $facebook = new Facebook(array(
      'appId'  => 'APPID',
      'secret' => 'APP-SECRET',
      'cookie' => true, // enable optional cookie support
    ));
    $user = $facebook->getUser();
    if ($user) {
      try {
        // Proceed knowing you have a logged in user who's authenticated.
        $user_profile = $facebook->api('/me');

            //$pageInfo = $facebook->api('/'.$pageid.'?access_token='.$_SESSION['fb_112104298812138_access_token].');
            //$pageInfoUser = $user_profile[id];
      } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
      }
    }
    /*  */
    if ($user) {
      $logoutUrl = $facebook->getLogoutUrl();
    } else {
    $params = array(
      scope => 'read_stream,publish_stream,publish_actions,offline_access',
      redirect_uri => $url
    );
      $loginUrl = $facebook->getLoginUrl($params);
    }
    $access_token = $_SESSION['fb_135669679827333_access_token'];

    ?>
<?php
        if(!$user){
    echo ' : <a href="'.$loginUrl.'" target="_self">Login</a>  ';
    }else{
        echo '<a href="'.$logoutUrl.'?'.$app_access_token.'" target="_blank">Logout</a>';
        }
?>
...