web-dev-qa-db-ja.com

WebサイトでのFacebookニュースフィード/タイムラインの表示

会社のFacebookニュースフィード/タイムラインをWebサイトに表示したいクライアントがいます。それは個人的なタイムライン/ニュースフィードではなく、組織のものです。

私が読んだものはすべて数年前のように見えますが、結果は次のように見えます:Facebookはすべてのデータを独自のサーバーに保持したいのです-人々がそれをエクスポートすることを望まず、人々は試みることを禁止されています。 (私が言うように、この情報は数年前のものでした。)

私が見つけた最も近い現在のものは Activity Feed Plugin ですが、それは他のユーザーのサイトまたはFBアプリとの対話のみを登録します。

公開アップデートを外部のWebサイトにエクスポートすることに成功した人はいますか、それともできないことをクライアントに伝える必要がありますか?

助けてくれてありがとう!

24
Chuck Le Butt

私の知る限り、ある意味では可能です。最も簡単な解決策ですが、状況に最適ではありません 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にアクセスするにはアクセストークンが必要ですが、ページオブジェクト自体を読み取るために必ずしもアクセストークンは必要ありません このドキュメント で指定されています。
ドキュメントの注:

アクセストークンを必要とする接続では、ページがパブリックで制限されていない場合、有効なアクセストークンを使用できます。制限されたページの接続にはユーザーアクセストークンが必要であり、ページに設定された制限条件(年齢など)を満たすユーザーのみに表示されます。

31
bool.dev

FacebookのGraph APIを使用して、組織のニュースフィードを取得できます。タイムラインは、パブリックAPIを介して取得できません。

これを行うプラグインはありません。あなたは電話する必要があります

https://graph.facebook.com/USER_ID/home

jSONレスポンスが返されます。

次に、JSONを解析して組織のWebページの新しいレイアウトにする必要があります。

紛らわしいことに、電話

https://graph.facebook.com/USER_ID/feed

は、ニュースフィードを取得するのではなく、ユーザーのウォール投稿を取得します。これは、必要な場合とそうでない場合があります。

ここ は、PHPを使用してWebサイトでニュースフィードを設定する基本を説明するチュートリアルです。

7
Gunnar Karlsson

これを行う最も簡単な方法は、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."&hellip;<br>";
$FB_feed .= "<small><a href='".$link."'>".$date."</a></small><br><br>";
}

return $FB_feed;
}
4

間違いなくできます。 facebookからアクセストークンを取得するだけで、facebook APIから投稿のJSONフィードにアクセスできます。

Facebook開発者サイトにアクセスして、上部の[アプリ]をクリックする必要があります。手順に従って、アプリシークレットとクライアントIDを取得します。次に、それらを次のURLに入れると、アクセストークンが返されます。

https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET

ここでステップバイステップの手順: http://smashballoon.com/custom-facebook-feed/access-token/

1
John Brackett

はい、できます。まず、facebookの開発者ページでWebサイトを登録します。 FBとの対話に適切なAPIを使用できるよりも。時々私はSpringSocialを使用しました(Springと緊密に作業していたため)... FBの独自のAPIを使用できます。これはチュートリアルを読むのにも非常に便利です here

1
Amit

このドキュメントでは、facebookアクセストークンを取得する手順と、トークンを使用してFBフィードを取得する手順について詳しく説明します。

例:ライブ例は、

https://newtonjoshua.com

Graph APIの紹介:Graph APIは、Facebookのプラットフォームにデータを出し入れするための主要な方法です。これは低レベルのHTTPベースのAPIであり、データのクエリ、新しいストーリーの投稿、広告の管理、写真のアップロード、アプリが実行する必要があるその他のさまざまなタスクに使用できます。

FaceBookアプリ:

https://developers.facebook.com

Facebookアプリを作成します。 App_IdApp_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を作成します。

1
Newton Joshua