2013-01-20 1 views
0

안녕하세요 저는 제공된 URL을 기반으로 페이스 북에서 이벤트 정보를 검색하기 위해 다음 코드를 사용합니다.Facebook 이벤트 장소 위도 및 경도 받기

function importEvent($url) 
{ 
    $facebook = new Facebook(array(
      'appId' => 'someAppId', 
      'secret' => 'someSecret', 
      'cookie' => true, // enable optional cookie support 
     )); 

    if(checkLogin()==true) 
    { 
     //get rid of hash if exists 
     $hash = explode('#',$url); 

     if(!empty($hash[1])) 
      $array = parse_url($hash[1]); 
     else 
      $array = parse_url($hash[0]); 

     parse_str($array['query'],$output); 
     $eid = $output['eid']; 

     if(empty($eid))//new url think http://www.facebook.com/events/2323423423423/ 
     { 
      $url = str_replace('http://www.facebook.com/events/','',$url); 
      $url = str_replace('https://www.facebook.com/events/','',$url); 
      $hash = explode('/?',$url); 

      if(!empty($hash[1])) 
       $url = $hash[0]; 

      $eid = str_replace('?','',$url); 
      $eid = str_replace('/','',$url); 
      //print_r($eid); 
     } 
      //Calling users.getinfo legacy api call example 
      try{ 
       $param = array(
        'method' => 'events.get', 
        'eids' => $eid, 
        'access_token' => $_SESSION['access_token'] 

       ); 
       $events = $facebook->api($param); 
      } 
      catch(Exception $o){ 
       error_log($o); 
       echo $o; 
      } 

     print_r($events); 
     return $events; 
    } 
} 

내가 갖는 출력은 이것이다 :

코드는 다음입니다

Array 
(
    [0] => Array 
     (
      [eid] => 410474065693887 
      [name] => Sunday Night Fever Vol.4 Disco Special @Legacy Rock Area 
      [pic_small] => http://profile.ak.fbcdn.net/hprofile-ak-snc6/276862_410474065693887_714884848_t.jpg 
      [pic_big] => http://profile.ak.fbcdn.net/hprofile-ak-snc6/276862_410474065693887_714884848_n.jpg 
      [pic] => http://profile.ak.fbcdn.net/hprofile-ak-snc6/276862_410474065693887_714884848_s.jpg 
      [pic_square] => http://profile.ak.fbcdn.net/hprofile-ak-snc6/276862_410474065693887_714884848_q.jpg 
      [has_profile_pic] => 1 
      [host] => Legacy Rock Area 
      [version] => 2 
      [description] => Αφου μας το ζητησατε "παρτε" το..!!! 

Μετα το τελευταιο απιστευτο killer Disco Party εχουμε την ευκαιρια να κανουμε προθερμανση για τον Super Αποκριατικο Φεβρουαριο που θα ακολουθησει στο Legacy Rock Area μεμια βραδυα γεματη Disco,Dance,Pop και οπου μας βγαλει...!! 

Κυριακη 20 Ιανουαριου λοιπον..Sunday Night Fever Disco Special!!! 

That night the DJ saves our lives...!!! 
      [start_time] => 2013-01-20 
      [end_time] => 
      [timezone] => 
      [is_date_only] => 1 
      [creator] => 1732432279 
      [update_time] => 1357737066 
      [location] => Legacy Rock Area 
      [hide_guest_list] => 
      [can_invite_friends] => 
      [privacy] => OPEN 
      [venue] => Array 
       (
        [id] => 244479685665743 
       ) 

      [all_members_count] => 7175 
      [attending_count] => 74 
      [unsure_count] => 144 
      [declined_count] => 509 
      [not_replied_count] => 6957 
     ) 

) 

그러나이 장소에는 다음이 포함되어 있음을 언급 API 문서에 :

이 이벤트의 위치 일반 access_token, user_events 또는 friends_events 다음 필드 중 하나 이상을 포함하는 개체 : id, s 도시, 주, 우편 번호, 국가, 위도 및 경도 필드에 표시됩니다.

하지만 내가 얻는 것은 회장 ID입니다.

장소 장소의 위도 + 한글을 검색하는 방법에 대한 특정 정보를 찾을 수 없으며 실수하지 않으면이 코드가 정상이라고 가정합니다.

장소 정보 만 다른 쿼리를 실행해야합니까? 그렇다면 참조 또는 코드 예제를 제공해주십시오. 아니면이 코드 조각에 lat + lng도 반환하는 방법이 있나요? 그래서 1 이벤트에 대해 2 개의 쿼리를 수행하지 않아도됩니까?

+1

어떻게 레거시 API를 제거하고 약 바로 사용 :'$ 이벤트 = $ facebook-> API ($의 이드)'? – ifaour

+0

좋아, 나는 사건의 정보와 다른 속성을 어떻게 얻을 수 있을까? 왜냐하면 내가 볼 수 있듯이 타협이 제한되어 있기 때문입니다. – Syd

답변

0

일부 연구 결과 fql.multiquery와 함께 작동 될 수 있으며 지금은 제대로 작동하는 것으로 나타났습니다. 다음은 소스 코드입니다.

function importEventFQL($url) 
{ 
    $facebook = new Facebook(array(
      'appId' => 'someApddID', 
      'secret' => 'someSecret', 
      'cookie' => true, // enable optional cookie support 
     )); 

    if(checkLogin()==true) 
    { 

     list($url_static,$url_URI) = explode('/events',$url); 

     $url_URI = ltrim($url_URI,'/'); 
     list($eid, $trash) = explode('/?',$url_URI); 

     $fql = '{'; 

     $fql .= '"event_info":"SELECT name, description, pic_small, pic_big, eid, venue, location, start_time, end_time, host from event WHERE eid=\'' . $eid . '\'",'; 
     $fql .= '"event_venue":"SELECT name, username, page_id, location FROM page WHERE page_id IN (SELECT venue.id FROM #event_info)"'; 

     $fql .= '}'; 

     $param = array(
      'method' => 'fql.multiquery', 
      'queries' => $fql, 
      'callback' => '' 
     ); 

     $result = $facebook->api($param); 

     print_r($result); 
    } 
} 
0

당신은 단지 FQL이 작업을 수행하려면 다음

{ 
    "events" : "SELECT privacy, name, description, start_time, venue.id, pic_cover FROM event WHERE eid IN (SELECT eid FROM event_member WHERE uid = me())", 
    "venues" : "SELECT latitude, longitude, name, page_id FROM place WHERE page_id IN (SELECT venue.id FROM #events)" 
}