使用PHP在网站上显示Facebook活动页面

时间:2014-07-17 15:41:56

标签: php facebook facebook-graph-api

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

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

此外,这里是对stackoverflow帖子的引用,它解决了我的问题,但似乎是旧版本的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的代码。这是一个反复出现的问题,我已经找到了很多代码。谷歌似乎偏好旧的过时结果,这使得很难找到相关的最新答案。

3 个答案:

答案 0 :(得分:1)

所以这是为WordPress? This plugin是免费的,包含从最新的Facebook SDK返回值所需的所有功能。 Mak示例下面的代码。

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

                ?>

答案 1 :(得分: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
                }


    }
?>

此致

答案 2 :(得分:0)

两个月后,我以新的眼光回到了这个问题,并在Google上尝试了不同的搜索。我立即找到了解决问题的可接受方案。我应该指明我找到的答案会显示您的帖子的Feed,而不是我最初要求的事件,但出于我的目的,它会有效。

解决方案是使用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>

您想要更换&#34; FacebookDevelopers&#34;在你的网页网址的网址中。

除了切换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;}
相关问题