2014-07-17 98 views
1

我想在其網站上顯示來自客戶Facebook頁面的活動。我花了幾個小時尋找這個,我發現了幾個解決方案,但他們似乎都指向Facebook的舊版API。在網站上使用PHP顯示Facebook活動頁面

我能夠在Facebook的網站上找到一些信息,但不幸的是,我不是一個非常熟練的PHP程序員,也不熟悉Facebook的API,所以我似乎無法弄清楚。以下是Facebook的頁面解釋他們關於API活動:https://developers.facebook.com/docs/graph-api/reference/v2.0/event

而且,這裏是該解決我的問題,一個計算器後的引用,但似乎是一箇舊版本的Facebook的API的:Display a public Facebook event on a web page

oliakaoil建議我給一個例子,所以這是我嘗試過的一件事情,這是行不通的。

<?php 
require '/home/diamonds/public_html/facebook/'; 
$fb = new Facebook(array(
     'appid'=>'Your-AppID', 
     'secret'=>'Your-AppSecret' 
    )); 
$page_events = $fb->api('/ikeausa/events', 'GET'); 
printf ('<pre>%s</pre>', $page_events); 
?> 

我的問題來自於參考Facebook SDK,如果我經歷過這個,其他代碼也可能無法工作。我已經上傳了最新的Facebook SDK,但我無法弄清楚如何正確引用它。看起來,舊的SDK可能是一個簡單的單一頁面「Facebook.php」,但在較新的SDK中,它是一個充滿一堆php文件的文件夾。如果它是一個文件,我想我可以找出如何引用它,但我不知道如何引用整個文件夾中的文件。另外,即使我知道如何引用它,我也不確定我會知道如何使用這些屬性。

不幸的是,我幾乎是這個領域的初學者,所以我真正可以使用的是一個如何去做的例子。這似乎是很多人想要做的事情,所以似乎在某個地方會有一個例子。每當我去尋找例子時,他們似乎都是舊SDK的代碼。這是我遇到過的很多我一直在尋找的代碼的反覆出現的問題。 Google似乎偏愛過時的過時結果,並且很難找到相關的最新答案。

+0

您的問題太廣泛了,不幸的是這個論壇。嘗試編寫一些代碼或至少一些僞代碼,開始從工作中獲得一些反饋,然後在此發佈結果並提出更具體的問題。 – oliakaoil

+1

以防萬一你想要一個完整的,一步一步的教程,這個頁面正是你想要的https://www.codeofaninja.com/2011/07/display-facebook-events-to-your-website.html – Emkey

+0

感謝您的評論。那是我一直在尋找的東西。由於我已經有了一些工作,我想現在我會堅持下去,但我會盡量在後面記住這一點。看起來我可以更好地控制該鏈接中描述的方法發生的情況。 –

回答

0

兩個月後,我又回到了這個問題用新鮮的眼睛和嘗試了不同的在Google上搜索。我立即找到了可以接受的解決方案。我應該指出,我找到的答案顯示了你的帖子的一個飼料,而不是像我最初所要求的那樣的事件,但爲了我的目的,它起作用。

解決方案是使用Facebook的Like Box功能。您可以在此處找到有關使用該功能的說明:http://developers.facebook.com/docs/reference/plugins/like-box/爲了顯示當前帖子的流,您需要確保使用選項data-stream="true"

我會在這裏複製一些示例代碼爲了方便: 右網頁的<body>標籤之後,把這個:

<div id="fb-root"></div> 
<script>(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&appId=683879905040205&version=v2.0"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 

然後,無論你想的箱子去,過去的這段代碼:

<div class="fb-like-box" data-href="https://www.facebook.com/FacebookDevelopers" data-height="500" data-colorscheme="light" data-show-faces="false" data-header="false" data-stream="true" data-show-border="false"></div> 

你會想要將URL中的「FacebookDevelopers」替換爲你的頁面URL。

除了切換Facebook爲Like Box提供的基本選項之外,我還希望根據頁面大小動態調整大小。我能得到它按照這裏提供的指導要做到這一點:http://coolestguidesontheplanet.com/create-responsive-facebook-like-box-wordpress/

上漿碼,你在你的CSS堅持如下:

.fb_iframe_widget {display: block !important;} 
.fb-like-box iframe {width: 100% !important;} 
.fb-like-box span {width: auto !important; position: initial !important;} 
.fb_iframe_widget_fluid span {width:100% !important;} 
.fb_iframe_widget span {position: static !important;} 
0

如果我明白了。

試試這個:

你需要4件事情要做: Facebook的API PHP, 的AppID,AppSecret幷包含authToken。

您可以在developers.facebook

獲取和嘗試這個代碼:

<?php 
    require './facebook.php'; 

    $facebook = new Facebook(array(
     'appId' => 'put_your_app_id_here', 
     'secret' => 'put_your_app_secret_here', 
     'cookie' => true, // enable optional cookie support 
    )); 

    try{ 
     $events=$facebook->api('/fanpage_here/events?access_token=access_token_here'); 
    }catch (FacebookApiException $e){ 
     error_log($e); 
    } 

    foreach ($events["data"] as $event){ 

     $startTime=strtotime($event["start_time"]); 



    if ((time()-$startTime)<=60*60*24*1 || $startTime>time()){ 
       try{ 

       $ev=$facebook->api('/'.$event["id"]); 
        }catch (FacebookApiException $e){ 

        error_log($e); 
         } 


     ?> 
         <div> 
          <img src="https://graph.facebook.com/<?php echo $event["id"]; ?>/picture?type=small" align="left" /> 
          <b>Name:</b> <a href="http://www.facebook.com/event.php?eid=<?php echo $event['id']; ?>"><?php echo $event['name']; ?></a><br> 
          <b>Time:</b> <?php echo date("l jS \of F Y h:i:s A",strtotime($event["start_time"])); ?>&nbsp;-&nbsp;<?php echo date("l jS 
          \of F Y h:i:s A",strtotime($event["end_time"])); ?><br> 
          <b>Location:</b> <?php echo $ev["location"]; ?><br> 
          <b>Description:</b> <?php echo substr($ev["description"] ,0,250);?><?php print("...");?><br> 
          <br> 
         </div> 
        <?php 
       } 


    } 
?> 

問候,

+0

感謝您花時間回覆。我試過上面的代碼,但它給了我這個錯誤:「失敗打開所需'./facebook.php'」。我會在哪裏得到facebook.php。我不確定facebook.php是否包含在最新的SDK中。如果我發現它,我不會介意使用舊的SDK,但聽起來代碼將在2015年4月停止支持。 –

+0

您可以在這裏找到:https://github.com/facebook/facebook-php-sdk – ivanfromer

+0

感謝您向我展示在哪裏可以找到它。不過,我相信這是舊的SDK。我認爲對它的支持將在一年內結束。另外,我不確定我被允許使用舊的SDK,因爲我今天剛剛獲得了我的Facebook開發人員應用ID。 ...儘管如此,我還是決定嘗試使用它,而且我比之前擁有更多的功能。它沒有出錯,但不是給我的活動頁面,而是加載了你給我鏈接的頁面。 –

1

因此,這是爲WordPress? This plugin是免費的,包含您從最新Facebook SDK返回值所需的所有功能。下面的代碼的MakExample。

  <?php 
        $args = array (
         'post_type' => 'facebook_events', 
         'posts_per_page' => -1, 
         'order' => 'ASC', 
        ); 

        $fbe_query = new WP_Query($args); 
        if($fbe_query->have_posts()): 
        while ($fbe_query->have_posts()) : $fbe_query->the_post(); 

         $event_title = get_the_title(); 
         $event_desc = get_the_content(); 
         $event_image = get_fbe_image('cover'); 

       ?> 
        <img src="<?php echo get_fbe_image('cover'); ?>" alt="" /> 
        <h1><?php echo $event_title; ?></h1> 
        <p><?php echo $event_desc; ?></p>  
       <?php 

        endwhile; 
        endif; 

       wp_reset_query(); 

       ?> 
相關問題