显示Facebook事件页面上的网站与PHP


Display Facebook Event Page On Website with PHP

我想在他们的网站上显示来自客户Facebook页面的事件。我花了几个小时搜索这个问题,我找到了几个解决方案,但它们似乎都指向Facebook API的旧版本。

我能够在Facebook的网站上找到一些信息,但不幸的是,我不是一个非常熟练的PHP程序员,也不熟悉Facebook的API,所以我似乎不能弄清楚。这是facebook页面解释他们关于事件的API: https://developers.facebook.com/docs/graph-api/reference/v2.0/event

此外,这里有一个参考stackoverflow的帖子,解决了我的问题,但似乎是一个旧版本的Facebook的API:在网页上显示一个公开的Facebook事件

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的代码。这是我在寻找的许多代码中反复遇到的问题。谷歌似乎更喜欢过时的旧结果,这使得很难找到相关的最新答案。

这是WordPress吗?这个插件是免费的,包括你需要从最新的Facebook SDK返回值的所有功能。下面的代码示例:

            <?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();  
                ?>

如果我明白了。

试试这个:

你需要做4件事:facebook API PHP;AppID, AppSecret和一个Authtoken。

你可以访问developer .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
                }

    }
?>

认为,

两个月后,我重新审视了这个问题,并尝试在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提供的基本选项外,我还想根据页面大小动态调整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;}