2012-02-01 3 views
1

친구 검색에 몇 가지 문제점이 있습니다. 나는 친구의 벽을 선택하는 앱을 개발하고있다. JavaScript SDK를 사용하여 로그인하고 권한을 얻습니다. 페이스 북의 라이브 친구 찾기 fql 문제

내 init 함수 :

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

로그인 기능 : 나는 ID가 친구 라이브 검색을위한 jQuery로 검색입니다 입력 사용하고이 후

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

:

$("#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"; 
    } 
    

    나는이 응용 프로그램에 몇 가지 문제가있다. 파이어 폭스를 사용할 때 everythig는 훌륭하게 작동하지만, 크롬 PHP 파일에서 "아무 사용자도"인쇄하지 않을 때 사용합니다. 내가 전혀 로그인하지 않으면 같은 역할을합니다.

  • 또 다른 문제점은이 실시간 검색이 매우 느리게 작동한다는 것입니다. 5-6 초 후에 응답을 보냅니다. 검색 속도를 높이려면 어떻게해야합니까? 처음에는 요청 대화 상자를 사용하려고했지만 한 명의 사용자 만 선택하려고합니다.

나는 모든 것을 아주 이해할 수 있었으면 좋겠다. 나는 내 가난한 영어를위한 soory입니다.

답변 해 주신 의견을 보내 주셔서 감사합니다.

+2

** 단지 ** 응용 프로그램의 비밀, 액세스 토큰, app_ids 등을 게시해서는 안됩니다 ** 그 정보로 누군가 당신, 응용 프로그램 또는 페이지를 가장하고 악의적 인 행동을 수행 할 수 있습니다. 게시물에서 중요한 데이터를 삭제했습니다. 앞으로이 점에 유의하십시오. – Lix

답변

0

Feed Dialog을 사용해보십시오. 그것은 친구 선택을위한 (매우 익숙한) 드롭 다운을 사용합니다 (당신의 사용자는 의심의 여지없이 그것에 익숙 할 것입니다). 친구에게 페이스 북 검색을 맡길 수 있습니다.

FB.ui() 메서드를 호출하는 방법이 매우 간단해야하므로 JavaScript SDK를 통해 로그인 메서드를 호출 할 수 있음을 이미 증명했습니다. 위에서 링크 된 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 매개 변수가 있는지보고 확인하여 성공적으로 만들어진 것을 감지 할 수 있습니다.


페이스 북의 도움을 받으십시오.
A little bird once told megood programmers are always the lazy ones. ;)

+0

나는이 기회를 더 일찍 보았지만, 처음에는 친구를 선택한 다음 그의 벽에 무엇을 올릴 지 선택해야하기 때문에 제 신청에는 좋지 않습니다. –

+1

Ok ... 그런 경우에는 사용자 친구를 미리 가져 와서 데이터베이스에 저장 한 다음 자동 완성 쿼리에 대해 자신의 데이터베이스를 저장하려고 할 수 있습니다. – Lix

관련 문제