it-swarm.com.ru

Facebook PHP исключение "(# 803) Некоторые из запрашиваемых псевдонимов не существуют"

У меня есть действительный и аутентифицированный пользователь, но при публикации на его стене из нашего веб-приложения PHP он возвращает:

Неустранимая ошибка: Uncaught OAuthException: (# 803) Некоторые из запрашиваемых псевдонимов не существуют: xxxxxxxxxxxxx "," name ":" xxxxxxx

У меня есть 24 других пользователей, которые могут писать без проблем. И я вижу, что пользователь существует, зайдя в https://graph.facebook.com/xxxxxxxxxxxxx

Вот код:

    $fb_user_id = $row[0]; // loaded from DB
    $facebook_token = $row[1]; // loaded from DB

    $result = $facebook->api('/' . $fb_user_id. '/feed/',
                                'post',
                                array('access_token' => $facebook_token,
                                    'message' => $postMessage,
                                    'name' => 'Product name',
                                    'caption' => 'Accomplished!',
                                    'link' => 'http://www.xxxxxxx.com/',
                                    'description' => $postMessage,
                                    'picture' => 'http://www.xxxxxxx.com/images/productImage.png'));

Есть идеи, почему API Facebook считает, что этого пользователя не существует?

10
Chris Masterton

У меня была эта проблема, позже я понял, что сохраняю uid в своей базе данных как integer, однако, новые профили facebook имеют очень длинные uid, такие как: 100004409446248, это не было значением, которое я мог сохранить как integer в моей базе данных mysql , Я изменил это, чтобы рассматривать его как varchar, так что теперь нет проблем

26
Daniel

Этот вопрос Получение списка друзей Facebook с последним API предлагает

$friends = $facebook->api('/me/friends');

1
0xAli

Я написал две библиотечные процедуры для получения целочисленных строк запроса. Аналогично опыту Dainel, когда я использую функцию intval(), я получаю неверный идентификатор Facebook, который приводит к этой ошибке.

Код:

function get_int($field) {
    $value = 0;
    if(isset($_GET[$field])) $value = intval($_GET[$field]);
    return $value;
}

Я использую get_str для facebook_id и проблема исчезла.

function get_str($field) {
    $value = '';
    if(isset($_GET[$field])) $value = $_GET[$field];
    return $value;
}
0
anov