У меня есть несколько проблем с поиском друзей.Я разрабатываю приложение, которое публикует сообщения на стене друзей.Я использую 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 секунд.Как я могу увеличить скорость поиска?Сначала я боролся за использование диалогового окна запроса, но я хочу выбрать только одного пользователя.
Надеюсь, я объяснил все вполне понятно.Спасибо за ваши ответы и предложения.