用PHP中的Pubsubhubbub订阅者回调实现

时间:2012-03-29 10:55:21

标签: php pubsubhubbub

我正在尝试使用PSHB协议来通知我的Google提醒。我正在使用找到的代码here。但是,我不清楚如何实现回调(或端点)。

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

谷歌代码的一个(稍加修改)片段如下:

<?php

// simple example for the PHP pubsubhubbub Subscriber
// as defined at http://code.google.com/p/pubsubhubbub/
// written by Josh Fraser | joshfraser.com | josh@eventvue.com
// 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文档。但是,像上面那样的一些骨架代码应该足以让我开始,这样我就可以提取诸如feed id,title和已发布内容等内容。

1 个答案:

答案 0 :(得分:2)

嗯,实现它的方式实际上取决于你想用它实现的目标。 但通常,回调需要处理两件事:

  • 意图验证
  • 处理通知

对于Intent的验证,如果您真的想要订阅该特定Feed,则回调需要回显hub.challenge参数。

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

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