24

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

私が読んだものはすべて数年前のようですが、結果は次のように思われます。Facebookはすべてのデータを独自のサーバーに保持したいと考えています。(私が言うように、この情報は数年前のものでした。)

私が見つけた最も近い現在のものはアクティビティフィードプラグインですが、それは他のユーザーのサイトまたはFBアプリとの相互作用のみを登録します。

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

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

4

6 に答える 6

31

AFAIK、それはある意味で可能です。最も単純な解決策ですが、状況に最適ではないのは、LikeBoxプラグインです。

Like Boxを使用すると、ユーザーは次のことができます。

すでにこのページを気に入っているユーザーの数と、このページを気に入っている友達を 確認してください。ページにアクセスしなくても、ワンクリックでページのようなページから 最近の投稿
を読むことができます。

より良い解決策: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

正確に必要なものに応じて、グラフAPIエクスプローラーを試して、それを確認してください(また、返されるデータの種類も確認してください)。投稿がたくさんある場合は、ページネーションのURLが表示されます。これは、エクスプローラーでも確認できます。

ページが公開されていない場合は、read_stream権限を持つaccess_tokenが必要になるため、websiteタイプのFacebookアプリを作成する必要があります。次に、クライアントのページの管理者に、read_stream 許可を得てアプリを承認してもらいます。その後、認証後に受け取ったaccess_tokenを使用してURLを呼び出し、ストリームの読み取りを続行できます。

https://graph.facebook.com/<clientpagename_OR_id>/posts?access_token=thetoken

この場合、PHP SDKを使用して、認証とグラフAPIの呼び出しを簡素化します。

重要なリンク:認証ガイドリアルタイム更新

幸運を。

編集:フィードまたは投稿の接続にアクセスするにはアクセストークンが必要ですが、このドキュメントに記載されているように、ページオブジェクト自体を読み取るためにアクセストークンは必ずしも必要ではありません。
ドキュメントからのメモ:

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

于 2012-04-23T23:01:36.717 に答える
7

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

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

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

これにより、JSON応答が得られます。

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

紛らわしいことに、

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

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

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

于 2012-04-23T23:25:59.450 に答える
4

これを行う最も簡単な方法は、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;
}
于 2013-07-11T12:41:56.033 に答える
1

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

于 2012-04-18T11:57:34.083 に答える
1

それは間違いなく行うことができます。Facebookからアクセストークンを取得するだけで、FacebookAPIを介して投稿の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/

于 2013-06-06T14:44:43.737 に答える
1

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

例: ライブの例はで利用可能です

https://newtonjoshua.com

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

FaceBookアプリ:

https://developers.facebook.com

Facebookアプリを作成します。あなたApp_IdApp_Secret

グラフAPIエクスプローラー:

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}}

有効期間はaccess_token2ヶ月です。

アクセストークンデバッガー:

https://developers.facebook.com/tools/debug/accesstoken?q= {{ access_token}}&version = v2.8

の詳細を確認できますaccess_token

Facebook SDK for JavaScript: 以下のJavaScriptをHTMLに含めて、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
            }

        }
    );
};

グラフAPIエクスプローラーを使用して、「フィールド」に入力する必要のあるクエリを設計します(例:「id、picture {url}、cover、feed」)

これで、access_tokenを使用してFacebookGraphAPIからFacebookデータをフェッチできます。

https://developers.facebook.com/docs/graph-api/overview/を参照してください

注:access_token2か月で有効期限が切れます。その後、新しいaccess_tokenを作成します。

于 2016-10-24T15:43:50.933 に答える