5

Google アラートの通知を受けるために PSHB プロトコルを使用しようとしています。ここにあるコードを使用しています。ただし、コールバック (またはエンドポイント) を実装する方法は明確ではありません。

誰かが、エンドポイントに POST されたデータにアクセスする方法を示す簡単な例を提供できますか?

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 ドキュメントであると思われるため、(上記の) アプローチは完全に間違っている可能性があることを認識しています。ただし、フィード ID、タイトル、公開されたコンテンツなどを抽出できるようにするには、上記のようなスケルトン コードで十分なはずです。

4

1 に答える 1

2

まあ、それを実装する方法は、それで何を達成したいかによって異なります。ただし、一般的に、コールバックで処理する必要があることが 2 つあります。

  • 意図の検証
  • 届出の取扱い

Verification of Intent の場合、その特定のフィードのサブスクリプションが本当に必要な場合は、コールバックで hub.challenge パラメーターをエコーする必要があります。

サブスクライブ時にシークレットを使用し、後で本文の内容を読み取って保存する必要がある場合は、通知を処理するために、おそらくコールバックで有効性 (署名) を確認する必要があります。

[更新]注意してください、通知はどのPOST変数にも含まれず、それ自体が完全な本文になります(からアクセス可能$request_body = @file_get_contents('php://input');)。POST 変数は通常、本体から PHP によって解析されます。このコンテキストでは、生の本文にアクセスする必要があります。その後、投稿された XML (RSS または Atom) から探しているすべての変数を抽出できます。

于 2012-03-29T16:01:36.373 に答える