2012-03-29 99 views
5

我试图使用PSHB协议来通知我的Google提醒。我使用的代码是here。但是,我不清楚如何实现回调(或端点)。Pubsubhubbub订阅PHP中的回调实现

有人可以提供一个简单的例子,说明我如何访问已发布到我的端点的数据?下面

A(略有修改)的谷歌代码的片段如下:

<?php 

// simple example for the PHP pubsubhubbub Subscriber 
// as defined at http://code.google.com/p/pubsubhubbub/ 
// written by Josh Fraser | joshfraser.com | [email protected] 
// Released under Apache License 2.0 

include("subscriber.php"); 

$hub_url = "http://pubsubhubbub.appspot.com"; 
$callback_url = "http://www.example.com/mycallback.php"; // <- how to implement this ? 

[[编辑]]

我添加下面的伪代码,以帮助进一步澄清问题.. 。

// Implementation of mycallback.php 
<?php 
    $pubsub_post_vars = $_POST[WHAT_NAME_AM_I_LOOKING_FOR]; //what's the name of the POST var? 
    // How do I get to the 'good stuff? 
    $feed_id = $pubsub_post_vars[SOME_VARIABLE] 
    $feed_title = $pubsub_post_vars[ANOTHER_VARIABLE] 
    $contents = $pubsub_post_vars[YET_ANOTHER_VARIABLE] 
    $author  = $pubsub_post_vars[YET_ANOTHER_VARIABLE_1] 
    $perma_link = $pubsub_post_vars[YET_ANOTHER_VARIABLE_2] 
    $pub_date = $pubsub_post_vars[YET_ANOTHER_VARIABLE_3] 
?> 

我知道的方法(上图)可以是完整的错误的,因为我怀疑这是一个RSS/ATOM文件是PO STED。然而,像上面这样的一些框架代码应该足以让我开始,以便我可以提取诸如feed ID,标题和发布的内容等。

+0

您是否找到了解决方案?你介意和我分享一下吗?我也遇到了回拨实施方面的问题。非常感谢你的帮助,非常感谢。 – overshadow 2014-08-07 04:57:00

回答

2

那么,实现它的方式实际上取决于你想用它达到什么目的。 但是总体来说,有两件事情您的回调需要处理:意向

  • 核查的通知
  • 处理

对于意图的验证,您的回调需要呼应hub.challenge参数,如果你真的想订阅该特定的Feed。

对于通知的处理,如果您在使用时泄露了秘密,并且稍后需要读取并保存正文的内容,则您的回调可能需要检查有效性(签名)。

[更新]当心,通知将不会包含在任何POST变量中,它将是整个身体本身(可通过$request_body = @file_get_contents('php://input');访问)。 POST变量通常由PHP从正文解析。在这种情况下,你确实想访问原始的身体。然后,您将能够从发布给您的XML(RSS或Atom)中提取您正在查找的所有变量。

+0

嗨,是的,我知道这应该很容易做 - 因此我无法解决如何做到这一点的挫折:)。请看我更新的问题。谢谢! – 2012-03-29 17:24:37