web-dev-qa-db-ja.com

Facebookは公開RSSフィードを殺した。新しいタイムラインでFacebookページのRSSを取得する方法

FacebookからRSSへのページフィードをプルしようとしていますが、試行するたびに、次のエラーがXMLに返されます。

<![CDATA[
This feed URL is no longer valid. Visit this page to find the new URL, if you have access: &lt;a href=&quot;https://www.facebook.com/profile.php?id=<FB_ID>&quot;&gt;https://www.facebook.com/profile.php?id=<FB_ID>&lt;/a&gt;
]]>

私が使用しているURLは次のとおりです。

https://www.facebook.com/feeds/page.php?id=<fb_id>&format=rss20&access_token=<my_page_token>

年齢制限も国制限もありません。
enter image description here

さらに、アクセストークンありとなしで試してみました。

以下のコメントに記載されているように、JSON URLは実際に機能しています。

https://graph.facebook.com/<page_name>/feed&https://www.facebook.com/<page_name>/‌​feed?access_token=<token>

ここで何が起こっているのですか/どのように問題を解決しますか?

13
ylluminate

同じ問題が発生しました。解決策を探した後、FBが公開RSSサポートを黙って殺したことがわかりました。 ( Jesse Stayのこの投稿 を参照)

私は自分でAPIを呼び出してフィードを作成する必要があることを理解しました(WPプラグインおよびその他のものでフィードを解析する必要もあります。

したがって、まずAPIキー(アプリIDとも呼ばれます)を取得し、PHP Facebook SDKをダウンロードします。

次に、 Universal Feed Generator PHPクラスをダウンロードします。必要なすべてのヘッダーとxmlが生成されます。

あなたのphpスクリプトは次のようになります:

require('lib/facebook.php'); // require your facebook php sdk
include("feed_generator/FeedWriter.php"); // include the feed generator feedwriter file

$fb = new facebook(array(
    'appId' =>  'YOUR_APP_ID', // get this info from the facebook developers page
    'secret'=>  'YOUR_SECRET_KEY' // by registering an app
));
$response = $fb->api('/spreetable/feed','GET'); // replace "spreetable" with your fb page name or username

// create the feedwriter object (we're using ATOM but there're other options like rss, etc)
$feed = new FeedWriter(ATOM);

$feed->setTitle('Spree Table'); // set your title
$feed->setLink('http://spreetable.com/facebook/feed.php'); // set the url to the feed page you're generating

$feed->setChannelElement('updated', date(DATE_ATOM , time()));
$feed->setChannelElement('author', array('name'=>'Spree Table')); // set the author name

// iterate through the facebook response to add items to the feed
foreach($response['data'] as $entry){
        if(isset($entry["message"])){
            $item = $feed->createNewItem();
            $item->setTitle($entry["from"]["name"]);
            $item->setDate($entry["updated_time"]);
            $item->setDescription($entry["message"]);
            if(isset($entry["link"]))
                $item->setLink(htmlentities($entry["link"]));

            $feed->addItem($item);
        }
}

// that's it... don't echo anything else, just call this method
$feed->genarateFeed();

今後の注意(2013-07-09):私の答えに耳を傾けないでください。古いです。 Facebookは、クエリ言語に新機能を備えた新しいAPIを備えているため、フィードを取得する手間を省くことができます。より楽しくインテリジェントな方法でAPIを使用してみてください:)

13
lu1s

これが私の方向です。

  1. Facebookに移動し、プロフィール画像を右クリックしてURLを取得し、IDをコピーします
  2. ここに行く https://graph.facebook.com/ID_GOES_HERE
  3. 結果のページにリストされているID値を取得してコピーします
  4. ここに移動して新しいIDを貼り付けてください https://www.facebook.com/feeds/page.php?id=ID_GOES_HERE&format=rss2
  5. URLをコピーしてフィードリーダーに貼り付けます
23
stacey

ソースページにページIDが見つからない場合、次のように、[ページを作成]リンクからIDを見つけました。

https://www.facebook.com/pages/create.php?ref_id=the_#_here

あぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ!みんな、ありがとう! :D

2
tona b

RSS/Atomフィードを取得するための2つの簡単なステップ:

このURLはAtomフィードを生成しますが、変更できます。

2
antou

ページIDを簡単に見つける方法:

FBページ(または以前はタブと呼ばれていたタイムラインアプリ)のソースを表示して、page_id。提供されたコードに置き換えます。

0
Michelle Dear