2011-04-20 50 views

回答

1

事件可通过Facebook Graph API获得,就像所有数据将作为JSON对象返回一样。

要检索它们,您必须发送一个有效的访问令牌。

有多种方法来检索数据 - 您可以使用不同的语言(PHP或Javascript最常见)和不同的技术(FQL语句,预定义的方法等)。

我这样做使用Javascript:

<script> 
    window.fbAsyncInit = function() { 
    FB.init({appId: 'your app id', status: true, cookie: true, 
      xfbml: true}); 
    }; 
    (function() { 
    var e = document.createElement('script'); e.async = true; 
    e.src = document.location.protocol + 
     '//connect.facebook.net/en_US/all.js'; 
    document.getElementById('fb-root').appendChild(e); 
    }()); 
</script> 

建设所需的url和回调处理返回的:

通过在页面的底部添加此代码初始化的JavaScript SDK data: 我用FB.getLoginStatus返回一个由FB.init创建的会话对象 - 它包含必要的访问令牌。 然后你必须指定一个函数,这个函数将被返回的数据调用, processResult()。您可以使用JSONP将数据直接返回到JSON对象。

getEvents: function(){ 

     FB.getLoginStatus(function(response){ 
      if (response.session){    
       var graphURL = 'https://graph.facebook.com/me/events?access_token=' + 
       response.session.access_token + '&callback=processResult&limit=10'; 
       var script = document.createElement('script'); 
       script.src = graphURL; 
       document.body.appendChild(script); 
      } 
     }); 

} 

该调用返回的对象如下所示,并包含可用于在需要时分页结果的url。

 processResult(
    {"data": [{"name": "Test event in Group nnn", 
     "start_time": "2011-08-01T05:30:00", 
     "end_time": "2011-08-01T06:30:00", 
     "location": "Location", 
     "id": "194845583864369", 
     "rsvp_status": "attending"},], 
     "paging": { 
     "previous": "https://graph.facebook.com/me/events?access_token=183551578351719\u00257C2.uakDQKBYcQSBrkEGdQj_QA__.3600.1303293600.1-522406451\u00257CvK4NtMrjkKJOVrUvRw2zB3b9w7w&callback=Drupal.EventBook.processResult&limit=10&since=1312176600", 
     "next": "https://graph.facebook.com/me/events?access_token=183551578351719\u00257C2.uakDQKBYcQSBrkEGdQj_QA__.3600.1303293600.1-522406451\u00257CvK4NtMrjkKJOVrUvRw2zB3b9w7w&callback=Drupal.EventBook.processResult&limit=10&until=1312176600" 
      } 
}); 

作为回调脚本的例子,这里是一个我以前是想说明我在一个jQuery UI对话框中的所有事件的名称:

processResult: function(events) { 
    if (events.paging == undefined) { 
    html = "No more results"; 
    } 
    else { 
     html = "<div>"; 
     graphURL = events.paging.next; 
     for (var event in events.data) { 
     html += '<p>' + events.data[event].name + '</p>'; 
     } 
     html +="</div>"; 
    } 
    dialogbox = jQuery('#eb_dialog').html(html) 
    .dialog({ 
     autoOpen: false, 
     title: 'List Event(s)', 
     modal:true, 
     width:600, 
     resizable:false, 
     buttons: {'Open Event': 
     function() {openSelectedEvents(); 
      },'Cancel':function() {jQuery(this).dialog('close');}}, 
    }); 
dialogbox.dialog('open'); 
} 
相关问题