Опубликовать на стене Facebook с графиком и PHP - PullRequest
0 голосов
/ 08 мая 2011

У меня проблемы с использованием открытого графика для публикации на стене в фейсбуке, и я не могу понять, в чем я не прав. Я использую библиотеку PHP / SDK от Github. Вот мой код:

<?php
require_once('facebook.php');
$facebook = new Facebook(array(
  'appId'  => 'APP_ID',
  'secret' => 'APP_SECRET',
  'cookie' => true,
));

$session = $facebook->getSession();

$me = null;
//session-based api call
if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}

//post to wall/stream function
if(isset($_POST['status'])) {
    try {
        $result = $facebook->api(
            '/me/feed',
            'post',
            array(
                'access_token' => 'ACCESS_TOKEN', 
                'message' => $_POST['status']
                )
            );
    } catch (FacebookApiException $e) {
        echo 'Error: ' . print_r($e, true);
    }
}
?>

<!-- HTML Form -->
<form name="" action="index.php" method="post">
    <input type="text" name="status" id="status" value="">
    <input type="submit" value="submit">
</form>

Я не знаю, что происходит, я пролистал миллиард уроков, постов, обменов и т. Д., И мне кажется, что я все делаю правильно. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 09 мая 2011

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

<?php
require_once('facebook.php');
$facebook = new Facebook(array(
  'appId'  => 'APP_ID',
  'secret' => 'APP_SECRET',
  'cookie' => true,
));

$session = $facebook->getSession();

if($session) {
    //post to wall/stream function
    if(isset($_POST['status'])) {
        try {
            $result = $facebook->api(
                '/me/feed',
                'post',
                array(
                    'message' => $_POST['status']
                    )
                );
        } catch (FacebookApiException $e) {
            echo 'Error: ' . print_r($e, true);
        }
    }
} else {
    $loginUrl = $facebook->getLoginUrl(array(
        'req_perms' => 'publish_stream'
    ));
    header("Location: $loginUrl");
}
?>

<!-- HTML Form -->
<form name="" action="index.php" method="post">
    <input type="text" name="status" id="status" value="">
    <input type="submit" value="submit">
</form>
0 голосов
/ 09 мая 2011

С кодом, который вы написали, предполагается, что вы используете Javascript SDK для создания cookie-файла facebook, что и используется вызовом $facebook->getSession() для входа пользователя: правильно ли вы настроили Javascript SDK

Кроме того, вы предполагаете, что любое используемое вами приложение получило соответствующее разрешение на публикацию на стене пользователя. См. http://developers.facebook.com/docs/authentication/permissions/ для получения дополнительной информации о необходимых разрешениях. Вы получили запрошенное разрешение от пользователя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...