FacebookからRSSへのページフィードをプルしようとしていますが、試行するたびに、次のエラーがXMLに返されます。
<![CDATA[
This feed URL is no longer valid. Visit this page to find the new URL, if you have access: <a href="https://www.facebook.com/profile.php?id=<FB_ID>">https://www.facebook.com/profile.php?id=<FB_ID></a>
]]>
私が使用しているURLは次のとおりです。
https://www.facebook.com/feeds/page.php?id=<fb_id>&format=rss20&access_token=<my_page_token>
年齢制限も国制限もありません。
さらに、アクセストークンありとなしで試してみました。
以下のコメントに記載されているように、JSON URLは実際に機能しています。
https://graph.facebook.com/<page_name>/feed&https://www.facebook.com/<page_name>/feed?access_token=<token>
ここで何が起こっているのですか/どのように問題を解決しますか?
同じ問題が発生しました。解決策を探した後、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を使用してみてください:)
これが私の方向です。
ソースページにページIDが見つからない場合、次のように、[ページを作成]リンクからIDを見つけました。
https://www.facebook.com/pages/create.php?ref_id=the_#_here
あぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ!みんな、ありがとう! :D
RSS/Atomフィードを取得するための2つの簡単なステップ:
このURLはAtomフィードを生成しますが、変更できます。
ページIDを簡単に見つける方法:
FBページ(または以前はタブと呼ばれていたタイムラインアプリ)のソースを表示して、page_id
。提供されたコードに置き換えます。