Uncaught OAuthException: (# 200), при попытке опубликовать на стене

1

Я хочу реализовать простую отправку сообщений с моего БД на мою стену facebook. Использование php-SDK:

require_once 'lib/facebook.php';

$appID = 'xxx';
$secret = 'yyy';
$facebook = new Facebook(array(
    'appId'     =>  $appID,
    'secret'    =>  $secret,
));

$user = $facebook->getUser();
if (empty($user)) {
    header("Location: ". $facebook->getLoginUrl(array(
        'req_perms' =>  'publish_stream',
    )));
    exit();
}

$params = array(
    'message' => 'Hello, every one!',
);
$post_id = $facebook->api('/'. $user .'/feed', 'post', $params);

И у меня есть "Uncaught OAuthException: (# 200) Пользователь не разрешил приложению выполнить это действие...".

Если я не вошел в систему, то при запуске этого скрипта, переадресовывая вход в facebook. Подтвердить использование данных не дано.

Теги:
facebook

1 ответ

4
Лучший ответ

Вот рабочий фрагмент, но убедитесь, что вы загрузили последнюю версию PHP SDK, то есть 3.0.1. Если у вас ее еще нет, загрузите ее здесь: https://github.com/facebook/php-sdk/

Если вы пройдете через приведенные ниже коды, вы в значительной степени поймете, что он делает, поэтому я не думаю, что должен объяснить вам больше?

<?php

// Requires Facebook PHP SDK 3.0.1: https://github.com/facebook/php-sdk/
require ('facebook.php');

define('FACEBOOK_APP_ID',"YOUR-APP-ID");
define('FACEBOOK_SECRET',"YOUR-APP-API-SECRET");

$user = null;

$facebook = new Facebook(array(
    'appId' => FACEBOOK_APP_ID,
    'secret' => FACEBOOK_SECRET,
    'cookie' => true
));

$user = $facebook->getUser(); // Get the UID of the connected user, or 0 if the Facebook user is not connected.

if($user == 0) {

    /**
     * Get a Login URL for use with redirects. By default, full page redirect is
     * assumed. If you are using the generated URL with a window.open() call in
     * JavaScript, you can pass in display=popup as part of the $params.
     * 
     * The parameters:
     * - redirect_uri: the url to go to after a successful login
     * - scope: comma separated list of requested extended perms
     */

    $login_url = $facebook->getLoginUrl($params = array('scope' => "publish_stream"));

    echo ("<script> top.location.href='".$login_url."'</script>");

} else {

    try {
            $params = array(
                'message'       =>  "Hurray! This works :)",
                'name'          =>  "This is my title",
                'caption'       =>  "My Caption",
                'description'   =>  "Some Description...",
                'link'          =>  "http://stackoverflow.com",
                'picture'       =>  "http://i.imgur.com/VUBz8.png",
            );

            $post = $facebook->api("/$user/feed","POST",$params);

            echo "Your post was successfully posted to UID: $user";

        }
        catch (FacebookApiException $e) {
           $result = $e->getResult();
        }

}

?>
  • 0
    Кстати, этот код будет публиковать полностенные посты с заголовком, надписью, изображением, ссылкой, описанием и сообщением, если вы не хотите писать полностью, просто удалите все в $ params, кроме message, и это сделает простое обновление статуса для вашего пользователя.
  • 0
    О, спасибо, это работа! Моя ошибка была в названии переменной в параметрах: "req_perms" вместо "scope". Но ... сообщение было опубликовано, но исключение: «Произошла непредвиденная ошибка. Пожалуйста, повторите запрос позже». Почему?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню