Сбой метода GetMutualFriends на Facebook без четкой причины - PullRequest
0 голосов
/ 04 сентября 2011

У меня есть приложение, которое запускается на веб-странице, оно имеет список идентификаторов facebook и просматривает их, проверяя, есть ли у зарегистрированного пользователя общие друзья с идентификаторами в списке; для этого я использую Rest API с metond friends.getMutualFriends, я использую этот метод, потому что таким образом я могу получить общих друзей без аутентификации обоих пользователей, мне просто нужна аутентификация для идентификатора пользователя источника, в случае FQL или использования Graph API оба пользователя должны быть подключены, чтобы я мог найти общих друзей, поэтому метод getMutualFriends так полезен в этом случае. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь найти общих друзей для пользователя, у которого много друзей, я получаю эту ошибку

«код ошибки»: 18, "error_msg": "Этот вызов API не может быть выполнен из-за ограничений ресурсов",

если я попытаюсь сделать это с пользователем, у которого меньше фрингов, то сработает вход, я знаю, что говорить меньше или много - это очень точно, поэтому давайте посмотрим на этот пример, если я попытаюсь выполнить это вызов с пользователем, у которого 300 друзей, вызов будет работать, но если я попытаюсь сделать то же самое с пользователем, у которого 700 друзей, он вернется обратно с ошибкой, которую я изложил выше, поэтому я подумал, что это может быть количество вызовов в секунду, поэтому я ограничил это, но это не сработало, я попытался сбросить ключи приложения, я попытался с несколькими разными пользователями, я попытался сделать это с новым приложением, и даже если я просто попробую сделайте один вызов, чтобы сравнить 2 пользователей, и он потерпит неудачу, если у пользователя много друзей, код, который я использую для этого,

function getMutualFriends($facebook, $uid1, $uid2)
{
    try
    {
        $param  =   array(
            'method'  => 'friends.getMutualFriends',
            'source_uid'    => $uid1,
            'target_uid'  => $uid2,
            'callback'=> ''
            );
        $mutualFriends   =   $facebook->api($param);
        return $mutualFriends;

    }

    catch(Exception $o)
    {
              return serialize($o);
    }

    return null;
}

function getMutualFriendInfo($facebook, $uid1, $uid2)
{

    $mutualfriends=getMutualFriends($facebook, $uid1, $uid2);
    if (is_array($mutualfriends))//!=''))
    {
        $friend_uids = implode(",",$mutualfriends);
        try
        {
            $param = array(
                'method' => 'users.getInfo',
                'uids' => $friend_uids,
                'fields' => 'name,pic_square,pic_big',
                'callback' => ''
                );
            $friend_info = $facebook->api($param);
            return $friend_info;
        }
        catch (Exception $o)
        {
             return serialize($o);
        }
    }
    return serialize($mutualfriends);
}

Итак, мои вопросы: есть ли что-то, что я делаю неправильно с этим кейдом, чтобы он не работал? Есть ли другой способ сделать это, кроме метода friends.GetMutualFriends? Я уже пробовал с этим SELECT uid1 FROM friend WHERE uid2=[targetID] AND uid1 IN (SELECT uid2 FROM friend WHERE uid1=[sourceID]), но это не сработало. Есть ли какое-либо конкретное происхождение этой ошибки?

Я очень запутался, потому что это работает для некоторых пользователей, а для других - нет, я искал, есть ли предел API, но я ничего не нашел по этому поводу, на панели инструментов API нет ошибок, этот код, кажется, работал раньше, и если я выполню вызов на тестовой консоли в Facebook, я получу ту же ошибку,

Спасибо за вашу помощь, любая идея будет оценена.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2011

В Facebook сообщается об ошибке.

http://bugs.developers.facebook.net/show_bug.cgi?id=15644

0 голосов
/ 05 сентября 2011

Во-первых, вы должны перейти от старого API отдыха к новому API графика .... потому что Facebook скоро устареет старый API отдыха.во-вторых, попробуйте этот запрос

SELECT uid1 FROM friend WHERE uid2='your user id'

Я надеюсь, что он будет работать

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