我想在他们的网站上显示来自客户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的代码。这是一个反复出现的问题,我已经找到了很多代码。谷歌似乎偏好旧的过时结果,这使得很难找到相关的最新答案。
答案 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"])); ?> - <?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;}