Реализация обратного вызова абонента Pubsubhubbub в PHP - PullRequest
5 голосов
/ 29 марта 2012

Я пытаюсь использовать протокол PSHB, чтобы получать уведомления о моих оповещениях Google. Я использую код, найденный здесь . Однако мне не ясно, как реализовать обратный вызов (или конечную точку).

Может ли кто-нибудь предоставить тривиальный пример, показывающий, как я могу получить доступ к данным, которые были размещены на моей конечной точке?

Ниже приведен фрагмент кода Google (слегка измененный):

<?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]
?>

Я понимаю, что подход (см. Выше) может быть совершенно неверным, так как я подозреваю, что это POST-документ RSS / ATOM. Тем не менее, некоторого скелетного кода, подобного приведенному выше, должно быть достаточно для начала, чтобы я мог извлечь такие вещи, как идентификатор канала, заголовок и опубликованный контент ... и т. Д.

1 Ответ

2 голосов
/ 29 марта 2012

Ну, способ его реализации действительно зависит от того, чего вы хотите достичь с его помощью.Но в целом есть две вещи, которые должен обработать ваш обратный вызов:

  • Проверка намерения
  • Обработка уведомлений

Для проверки намерения вашобратному вызову необходимо отобразить параметр hub.challenge, если вы действительно хотите подписку на этот конкретный канал.

Для обработки уведомления ваш обратный вызов, вероятно, должен проверить действительность (подпись), если выиспользовал секрет при подсыпке, а затем ему нужно прочитать и сохранить содержимое тела.

[ОБНОВЛЕНИЕ] Осторожно, уведомление не будет включено ни в одну переменную POST, оно будет являться полным телом (Доступно до $request_body = @file_get_contents('php://input');).POST-переменные обычно анализируются PHP из тела.В этом контексте вы хотите получить доступ к сырому телу.После этого вы сможете извлечь все переменные, которые вы ищете, из XML (RSS или Atom), отправленного вам.

...