自前アプリでPubSubHubBubのpubに対応するのをやってみたので、とりあえずメモしたものをブログに載せときます。0. 対象PubSubHubBubのpubサイト、すなわちRSS2.0またはATOMフィードを出力するWebサイト/Webアプリケーション(注意)文中のYOUR_RSS2_FEED_URLはpubサイトのRSS2.0フィードのURLYOUR_ATOM_FEED_URLはpubサイトのATOMフィードのURLを示す。hubサイトとして https://pubsubhubbub.appspot.com/ を利用する1. RSSフィード/ATOMフィードの修正-1. RSS2.0フィードの場合* rss要素にatomのNSを入れる(例)xmlns:content="https://purl.org/rss/1.0/modules/content/"xmlns:wfw="https://wellformedweb.org/CommentAPI/"xmlns:dc="https://purl.org/dc/elements/1.1/"xmlns:atom="https://www.w3.org/2005/Atom">* atom:link rel=”self” と atom:link rel=”hub”をの中に入れる-2. ATOMフィードの場合* link rel=”self” と link rel=”hub”を入れる-3. フィードの確認https://feedvalidator.org/ で確認エラーではないが、* line 12, column 62: Unregistered link relationship: hub [help]こんなRecommendationsが出るが、気にしない、というかむしろ正しい。-4. appspotでの確認https://pubsubhubbub.appspot.com/publishのPublishフォームにフィードのURLを入力し、Publishを行う。下のPublisher Diagnosticsフォームに同じくフィードのURLを入力し、「Get info」を押してTopic Details – YOUR_ATOM_FEED_URLCould not find any record for topic URL: YOUR_ATOM_FEED_URLみたいなメッセージがでる。Livedoor ReaderなどのPubSubHubBub対応クライアントでフィードを購読し、Sub側に現れてもらう。下のPublisher Diagnosticsフォームに同じくフィードのURLを入力し、「Get info」を押して情報が出力されればOK2. アプリからPublish通知を送るhubサイト https://pubsubhubbub.appspot.com/ に対して、以下のパラメータをもつPOSTリクエストを送信する。このPOSTリクエストは application/x-www-form-urlencoded形式のContent-Typeで送信する必要がある。

  • hub.mode : “publish”という文字列
  • hub.url : RSS2.0またはATOMフィードのURL

phpのcurl関数で書くとこんな感じ$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'https://pubsubhubbub.appspot.com/');curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTDATA, 'hub.mode=publish&hub.url='.urlencode('YOUR_ATOM_FEED_URL'));curl_exec($ch);curl_close($ch);※ POSTDATAをarrayで渡すとapplication/x-www-form-urlencodedにならないハズなんで注意関連記事

投稿者: ほそいりょすけのほめぱげ 投稿日時: 2009年9月4日(金) 03:36