会社のFacebookニュースフィード/タイムラインをWebサイトに表示したいクライアントがいます。それは個人的なタイムライン/ニュースフィードではなく、組織のものです。
私が読んだものはすべて数年前のように見えますが、結果は次のように見えます:Facebookはすべてのデータを独自のサーバーに保持したいのです-人々がそれをエクスポートすることを望まず、人々は試みることを禁止されています。 (私が言うように、この情報は数年前のものでした。)
私が見つけた最も近い現在のものは Activity Feed Plugin ですが、それは他のユーザーのサイトまたはFBアプリとの対話のみを登録します。
公開アップデートを外部のWebサイトにエクスポートすることに成功した人はいますか、それともできないことをクライアントに伝える必要がありますか?
助けてくれてありがとう!
私の知る限り、ある意味では可能です。最も簡単な解決策ですが、状況に最適ではありません Like Boxプラグイン :
Like Boxにより、ユーザーは次のことができます。
すでにこのページを気に入っているユーザーの数と、そのページを気に入っている友達を確認してください
ページから最近の投稿を読む
1回クリックするだけで、ページにアクセスする必要はありません
より良いソリューション: Graph API を使用しますが、データを(JSONとして)しか読み取ることができず、クライアントのWebサイトにストリームを正確に複製することはできません。スタイルを適用できるとは思わないでください。 facebookが使用する(つまり、それをスクレイプすることはできません)、それを複製するか、独自のスタイルを作成する必要があります。
プライバシールールがないため、ページが公開され、すべての人が読むことができる場合、有効なaccess_token(アプリのaccess_tokenでも可)を使用してURLを呼び出すことができます。
https://graph.facebook.com/<clientpagename_OR_id>/feed
または
https://graph.facebook.com/<clientpagename_OR_id>/posts
正確に必要なものに応じて、 graph api Explorer を試して確認してください(また、返されるデータの種類も確認してください)。投稿が多い場合は、ページネーションURLが表示されます。これは、エクスプローラーでも確認できます。
ページが公開されていない場合、read_stream権限を持つaccess_tokenが必要です。したがって、タイプwebsiteの facebook app を作成する必要があります。次に、クライアントのページの管理者にread_stream
許可 。その後、認証後に受け取ったaccess_tokenでURLを呼び出して、ストリームの読み取りを続行できます。
https://graph.facebook.com/<clientpagename_OR_id>/posts?access_token=thetoken
この場合、 PHP SDK を使用して、認証を簡素化し、グラフAPIを呼び出します。
がんばろう。
編集:フィードまたは投稿connectionsにアクセスするにはアクセストークンが必要ですが、ページオブジェクト自体を読み取るために必ずしもアクセストークンは必要ありません このドキュメント で指定されています。
ドキュメントの注:
アクセストークンを必要とする接続では、ページがパブリックで制限されていない場合、有効なアクセストークンを使用できます。制限されたページの接続にはユーザーアクセストークンが必要であり、ページに設定された制限条件(年齢など)を満たすユーザーのみに表示されます。
FacebookのGraph APIを使用して、組織のニュースフィードを取得できます。タイムラインは、パブリックAPIを介して取得できません。
これを行うプラグインはありません。あなたは電話する必要があります
https://graph.facebook.com/USER_ID/home
jSONレスポンスが返されます。
次に、JSONを解析して組織のWebページの新しいレイアウトにする必要があります。
紛らわしいことに、電話
https://graph.facebook.com/USER_ID/feed
は、ニュースフィードを取得するのではなく、ユーザーのウォール投稿を取得します。これは、必要な場合とそうでない場合があります。
ここ は、PHPを使用してWebサイトでニュースフィードを設定する基本を説明するチュートリアルです。
これを行う最も簡単な方法は、FacebookタイムラインRSSを読むことです。
function FacebookFeed($pagename, $count, $postlength) {
$pageID = file_get_contents('https://graph.facebook.com/?ids='.$pagename.'&fields=id');
$pageID = json_decode($pageID,true);
$pageID = $pageID[$pagename]['id'];
ini_set('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');
$rssUrl = 'http://www.facebook.com/feeds/page.php?format=rss20&id='.$pageID;
$xml = simplexml_load_file($rssUrl);
$entry = $xml->channel->item;
for ($i = 0; $i < $count; $i++) {
$description_original = $entry[$i]->description;
$description_striphtml = strip_tags($description_original);
$description = substr($description_striphtml, 0, $postlength);
$link = $entry[$i]->link;
$date_original = $entry[$i]->pubDate;
$date = date('d-m-Y, H:i', strtotime($date_original));
$FB_feed .= $description."…<br>";
$FB_feed .= "<small><a href='".$link."'>".$date."</a></small><br><br>";
}
return $FB_feed;
}
間違いなくできます。 facebookからアクセストークンを取得するだけで、facebook APIから投稿のJSONフィードにアクセスできます。
Facebook開発者サイトにアクセスして、上部の[アプリ]をクリックする必要があります。手順に従って、アプリシークレットとクライアントIDを取得します。次に、それらを次のURLに入れると、アクセストークンが返されます。
ここでステップバイステップの手順: http://smashballoon.com/custom-facebook-feed/access-token/
はい、できます。まず、facebookの開発者ページでWebサイトを登録します。 FBとの対話に適切なAPIを使用できるよりも。時々私はSpringSocialを使用しました(Springと緊密に作業していたため)... FBの独自のAPIを使用できます。これはチュートリアルを読むのにも非常に便利です here
このドキュメントでは、facebookアクセストークンを取得する手順と、トークンを使用してFBフィードを取得する手順について詳しく説明します。
例:ライブ例は、
Graph APIの紹介:Graph APIは、Facebookのプラットフォームにデータを出し入れするための主要な方法です。これは低レベルのHTTPベースのAPIであり、データのクエリ、新しいストーリーの投稿、広告の管理、写真のアップロード、アプリが実行する必要があるその他のさまざまなタスクに使用できます。
FaceBookアプリ:
Facebookアプリを作成します。 App_Id
とApp_Secret
を取得します
Graph API Explorer:
https://developers.facebook.com/tools/Explorer/
{{App_Id}}
/?method = GET&path = me%2Ffeed&version = v2.8
短命のaccess_token
を取得します。これがshort_lived_access_token
になります。
注:アクセストークンを作成するときに、必要なすべてのfbフィールドを選択します。これにより、アクセストークンにこれらのフィールドを取得する許可が与えられます。
アクセストークンエクステンション:
https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id={{App_Id}}&client_secret = {{App_Secret}}&fb_exchange_token ={{short-lived-access_token}}
有効期限が2か月のaccess_token
を取得します。
アクセストークンデバッガ:
https://developers.facebook.com/tools/debug/accesstoken?q={{access_token}}&version = v2.8
access_token
の詳細を確認できます。
JavaScript用Facebook SDK:HTMLに以下のJavaScriptを含めて、ページにSDKを非同期的にロードします
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
グラフAPI:API呼び出しを行って、FB ID、プロフィール写真、カバー写真、フィードを取得しましょう。
window.fbAsyncInit = function () {
FB.init({
appId: '{{App_Id }}',
xfbml: true,
version: 'v2.7'
});
FB.api(
'/me',
'GET', {
fields: 'id,picture{url},cover,feed',
access_token: {{access_token}}
},
function (response) {
if (response.error) {
console.error(response.error.message);
}
if (response.picture.data.url) {
profilePic = response.picture.data.url;
}
if (response.cover.source) {
coverPic = response.cover.source;
}
if (response.feed.data) {
feeds = response.feed.data;
feeds.forEach(function (feed) {
// view each feed content
});
}
if (response.feed.paging.next) {
nextFeedPage = response.feed.paging.next;
// a request to nextFeedPage will give the next set of feeds
}
}
);
};
Graph API Explorerを使用して、「フィールド」に入力するクエリを設計します(例:「id、picture {url}、cover、feed」)
これで、access_tokenを使用してFacebook Graph APIからFacebookデータを取得できます。
https://developers.facebook.com/docs/graph-api/overview/ を参照してください
注:access_token
は2か月後に有効期限が切れます。その後、新しいaccess_tokenを作成します。