2013-03-15 77 views
-2

我想要一個具有字段「FB URL」的內容類型來獲取Facebook事件的URL,並且當人們加載這種類型的節點時,facebook事件的內容通過FB API。它不能從數據庫中檢索,因爲內容必須與Facebook上的內容保持一致。從node_load獲取Facebook內容()

到目前爲止,我創建了一個模塊node_load()而節點被載入補充內容,但我不知道是什麼函數從FBOauth模塊調用這樣做......而在此之前,我試圖用一個簡單的file_get_contents();直到FB應用程序的訪問令牌過期並且不知道如何動態獲取新的訪問令牌。

我想我會迷路,所以任何人都可以指導我如何做到這一點?

非常感謝!

回答

0

好吧,我發現(我不明白-1雖然,這個問題的目的是知道我是在正確的軌道上做到這一點):

function fb_event_crawler_node_load($nodes, $types) { 
    foreach ($nodes as $node) { 
     if ($node->type=="event"){ 
      $fb_url = $node->field_event_url['und'][0]['value']; 
      $url = parse_url($fb_url); 
      if (!$url['host'] == 'www.facebook.com'){ 
       echo t('This is not a Facebook URL'); 
      } 

      $path_exploded = explode("/", $url['path']); 
      if (!$path_exploded[1] == 'events'){ 
       echo t("This is not a Facebook event page!"); 
      } 

      $fb_event_id=$path_exploded[2]; 

       // dpm($path_exploded); 


      $app_id = isset($app_id) ? $app_id : variable_get('fboauth_id', ''); 
      $app_secret = isset($app_secret) ? $app_secret : variable_get('fboauth_secret', ''); 
      $app_token_url = "https://graph.facebook.com/oauth/access_token?" 
      . "client_id=" . $app_id 
      . "&client_secret=" . $app_secret 
      . "&grant_type=client_credentials"; 

      $response = file_get_contents($app_token_url); 
      $params = null; 
      parse_str($response, $params); 
      $access_token=$params['access_token']; 

       //echo($params['access_token']); 

      $fbquery = fboauth_graph_query($fb_event_id."/", $access_token); 

      dpm($fbquery); 
     } 
    } 
}