【问题标题】:What should be written in callback file of Superfeedr?Superfeedr的回调文件应该写什么?
【发布时间】:2012-01-07 20:29:58
【问题描述】:

我需要生成 RSS 提要并获取帖子的标题和网址等。我决定使用Superfeedr。所以在这种情况下,我是 Superfeedr 的订阅者。有回调(订阅者 URL)字段来获取数据,但我不知道应该在回调文件中写什么。我在网上研究了示例代码,但我没有发现任何关于示例代码的信息。顺便说一句,我想在 PHP 中执行此过程。所以如果你知道我需要写什么到这个文件,请评论。

【问题讨论】:

    标签: php api websub rss-reader superfeedr


    【解决方案1】:

    约翰,我想你明白了……这很好。现在,在你的 PHP 中写什么:这个回调 url(你的 PHP 文件)将在 2 种不同的情况下被调用:

    1. 验证您的意图(确认您要订阅)
    2. 通知您有新内容。

    我不是 PHP 人,但我会为你描述算法

    要区分两者,您只需查看请求的类型。如果是 GET 请求,则为意图验证,如果为 POST 请求,则为新内容的通知。

    如果是内容验证,您只需回应作为 GET 参数提供的 hub.challenge(我相信 echo $_GET['hub.challenge']; 应该可以工作)。您还应该验证您是否真的想要订阅,但您的应用程序的逻辑我不知道(大多数人只是在他们的数据库中查找$_GET['hub.topic'],如果它在那里,请回应挑战。如果不是,呼应其他内容。

    如果是新内容的通知,那就有点复杂了。您必须访问 HTTP 请求的 BODY(同样,不确定 PHP 是如何做到的,但我相信有人可以提供帮助),然后解析它以提取标题和 url,并按照您的需要处理它们(大多数人们会将其保存在他们的数据库中)。

    我希望这会有所帮助!

    【讨论】:

    • 感谢您的详细回答。但是当我在 pubsub 控制台中提交结果时,会写入 Your callback url didn't echo the challenge. Please make sure it does ("" instead of "8xxxxxxxxxxxxxxxx5ce") 作为输出。为什么?
    • 顺便说一句,我使用了这样的代码:if (isset($_GET['hub_challenge'])) { header('HTTP/1.1 204 "No Content"', true, 204); echo $_GET['hub_challenge']; echo $_GET['hub.topic']; exit; }
    • 好吧,出于某种原因,现在,您的回调没有回应挑战。你使用 $_GET['hub_challenge'],而它是 $_GET['hub.challenge'] (但也许 PHP 不喜欢 HTTP 查询参数名称中的“.”?
    • 我改了,结果没变。如果您有其他语言(不是 PHP)的示例代码,请写在这里。我会检查的。
    • John,请写信给 Superfeedr Google Group:groups.google.com/group/superfeedr,它可能更合适,当然有人可以发布一些 PHP 示例代码 :)
    【解决方案2】:

    我在 php.ini 中使用此代码。希望它可以帮助某人

    <?php
      if(isset($_Get["hub_challenge"])){
       echo $_Get["hub_challenge"];
       return;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-17
      • 2021-12-17
      • 2020-09-06
      • 2021-03-08
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      相关资源
      最近更新 更多