Что должно быть написано в callback-файле Superfeedr?

Мне нужно создать RSS-канал и получить заголовок и URL-адреса сообщений и так далее. Я решил использовать для этого Superfeedr. Так что в данной ситуации я подписчик в Суперфидре. Есть поле обратного вызова (URL подписчика) для получения данных, но я не знаю, что должно быть написано в файле обратного вызова. Я исследовал сеть, например, код, но ничего не нашел о примере кода. Кстати, я хочу сделать этот процесс в PHP. Поэтому, если вы знаете, что мне нужно написать в этот файл, пожалуйста, прокомментируйте.


person John    schedule 07.01.2012    source источник


Ответы (2)


Джон, я думаю, ты понял... что хорошо. Теперь, что написать в вашем PHP: этот URL-адрес обратного вызова (ваш файл PHP) будет вызываться в 2 разных случаях:

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

Я не PHP человек, но я опишу вам алгоритм

Чтобы различать их, вам просто нужно посмотреть на тип запроса. Если это GET-запрос, то это проверка намерения, а если POST-запрос, то это уведомление о новом контенте.

Если это проверка содержимого, вам просто нужно повторить hub.challenge, указанный в качестве параметра GET (я считаю, что echo $_GET['hub.challenge']; должен работать). Вы также должны убедиться, что вы действительно хотите получить подписку, но что логика вашего приложения и я ее не знаю (большинство людей просто ищут $_GET['hub.topic'] в своей базе данных и, если она там, повторяют вызов. Если нет, повторяют что-то другое.

Если это уведомление о новом контенте, все немного сложнее. Вы должны получить доступ к ТЕЛУ HTTP-запроса (опять же, не уверен, как PHP это делает, но я уверен, что кто-то может помочь), затем проанализировать его, чтобы извлечь заголовок и URL-адреса, и обработать их так, как вы хотите (большинство люди сохранят это в своих базах данных).

Надеюсь, это поможет!

person Julien Genestoux    schedule 08.01.2012
comment
спасибо за подробный ответ. но когда я отправляю в консоль pubsub, в результате в качестве вывода записывается Your callback url didn't echo the challenge. Please make sure it does ("" instead of "8xxxxxxxxxxxxxxxx5ce"). Зачем ? - person John; 08.01.2012
comment
Кстати, я использовал такой код: if (isset($_GET['hub_challenge'])) { header('HTTP/1.1 204 "No Content"', true, 204); echo $_GET['hub_challenge']; echo $_GET['hub.topic']; exit; } - person John; 08.01.2012
comment
Ну, по какой-то причине прямо сейчас ваш обратный вызов не повторяет вызов. вы используете $_GET['hub_challenge'], тогда как это $_GET['hub.challenge'] (но, может быть, PHP не любит . в именах параметров HTTP-запроса? - person Julien Genestoux; 09.01.2012
comment
Я изменил его, но результат не изменился. Если у вас есть пример кода для других языков (не PHP), напишите здесь. Я проверю его. - person John; 09.01.2012
comment
Джон, напишите в группу Google Superfeedr : groups.google.com/group/superfeedr, это, вероятно, будет более подходящим, и кто-то наверняка может опубликовать пример кода PHP :) - person Julien Genestoux; 09.01.2012

Я использую этот код в php. Надеюсь, это поможет кому-то

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