Facebook живой поиск друзей FQL проблемы - PullRequest
1 голос
/ 01 февраля 2012

У меня есть несколько проблем с поиском друзей.Я разрабатываю приложение, которое публикует сообщения на стене друзей.Я использую JavaScript SDK для входа и получения разрешений.

Моя функция инициализации:

FB.init({
                appId: 'xxxxxxxxx',
                status: true,
                cookie: true,
                xfbml: true,
                oauth: true});

Функция входа в систему:

FB.login(function(response) {
                    if (response.authResponse){
                        //if loged in
                    }else{ 
                       //if canceled
                    }
                }, {scope: 'publish_stream'});

После этого я использую ввод, которыйid - это поиск в jQuery для поиска друзей в реальном времени:

$("#search").keyup(function(){
        $("#friends").load("draugai.php",{
            "search":$("#search").val()
        }, function(){
            $(".friend").click(function(){
                $(this).addClass("selected").siblings().removeClass("selected");
            });
        });
    });

мой php-файл использует fql для поиска друзей:

   require_once('facebook.php');

$config = array(
    'appId' => 'XXX',
    'secret' => '1234',
    'cookie' => true
);
$facebook = new Facebook($config);
try {
    $user_id = $facebook->getUser();
} catch (FacebookApiException $e) {
    echo($e->getType());
    echo($e->getMessage());
}

if ($_POST['search'] != "") {
    $search = strtolower($_POST['search']);
    $fql = "SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND strpos(lower(name),'$search') >= 0 ORDER BY name";
} else {
    $fql = "SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) ORDER BY name";
}
if ($user_id) {
    try {
        $ret_obj = $facebook->api(array(
            'method' => 'fql.query',
            'query' => $fql,
                ));
        foreach ($ret_obj as $value) {
            echo "<div class=\"friend\" uid=\"" . $value['uid'] . "\">";
            echo $value["name"] . "<img src=\"" . $value['pic_square'] . "\"/>";
            echo "</div>";
        }
    } catch (FacebookApiException $e) {
        echo($e->getType());
        echo($e->getMessage());
    }
} else {
    echo "no user";
}

У меня есть несколько проблем с этим приложением:

  • Я не могу заставить это работать на Google Chrome.Когда я использую Firefox, все работает хорошо, но когда я пробую его на chrome php, файл выводит «no user».Он действует так же, если я вообще не вхожу в систему.
  • Другая проблема заключается в том, что поиск в реальном времени работает очень медленно.Отправляет ответ через 5-6 секунд.Как я могу увеличить скорость поиска?Сначала я боролся за использование диалогового окна запроса, но я хочу выбрать только одного пользователя.

Надеюсь, я объяснил все вполне понятно.Спасибо за ваши ответы и предложения.

1 Ответ

0 голосов
/ 01 февраля 2012

Возможно, вы захотите использовать Feed Dialog . Он использует (очень знакомый) выпадающий список для выбора друзей (ваши пользователи, несомненно, будут знакомы с этим). И вы можете оставить друга, ищущего в Facebook

Вы уже продемонстрировали, что можете использовать JavaScript SDK для вызова метода входа в систему, поэтому вызов метода FB.ui() должен быть довольно простым. Вот пример кода из документации Facebook, на который я ссылался выше.

var obj = {
  method: 'feed',
  link: 'https://developers.facebook.com/docs/reference/dialogs/',
  picture: 'http://fbrell.com/f8.jpg',
  name: 'Facebook Dialogs',
  caption: 'Reference Documentation',
  description: 'Using Dialogs to interact with users.'
};

function callback(response) {
  document.getElementById('msg').innerHTML = "Post ID: " + response['post_id'];
}

FB.ui(obj, callback);

Из функции callback вы можете обнаружить, что сообщение было успешно создано, проверив наличие параметра post_id.


Просто позвольте Facebook помочь вам!
Маленькая птичка однажды сказала мне , что хорошие программисты всегда ленивы . ;)
...