web-dev-qa-db-ja.com

Facebook APIを使用してパブリックウォールの投稿を取得する方法

プロフィールのFacebookから壁の投稿を取得しようとしています。ファンページに問題はなく、ユーザートークンは有効です(少なくともファンページに対して)。

この投稿の例: https://www.facebook.com/aurelia.filion/posts/10151342315613445 ご覧のとおり、投稿は公開されています。

だから私は試してみます:graph.facebook.com/529628444_10151342315613445?access_token = MY_TOKEN graph.facebook.com/10151342315613445?access_token=MY_TOKEN

戻り値: "error":{"message": "Unsupported get request。"、 "type": "GraphMethodException"、 "code":100

私のAPIグラフエクスプローラーでは、このユーザーからの投稿も表示されません。 graph.facebook.com/529628444?fields=posts(529628444はaurelia.filionのID)

それで壁のポストを手に入れることは可能ですか?それは彼らを手に入れる方法であるべきだと公にしています

ありがとう


わかりました。別の方法で説明します。私の目標は、この種類の投稿をグラフで取得することです(これら以外のすべての投稿を取得できます)

facebook.com/aurelia.filion/posts/10151342315613445

facebook.com/aurelia.filion/posts/10151336175793445

しかし、「サポートされていない取得要求」というエラーが表示されます。

ユーザートークンとアプリトークンの両方を試しましたが、このリンクは機能しません:graph.facebook.com/529628444_10151342315613445?access_token=MY_TOKEN

フィードを試してみたところ、必要な投稿が表示されません。

そして、私が投稿をリクエストすると、graph.facebook.com/529628444/posts?limit = 100&access_token = TOKEN私はひどい投稿を除くすべて(リンク、写真など)を見ることができます!!

どうすればこれらの投稿を取得できますか?それはトークンの問題ですか?それはステータスのようです、取得するのは異なりますか?つまり、アクセス許可が必要ですか? graph.facebook.com/529628444?fields=statuses&access_token=TOKEN結果は返されません!空っぽです!

編集

12
user2208252

編集する

この回答は、Graph APIのバージョンが最初のバージョンであったときに書き戻されました。その当時は、ユーザーIDを使用してユーザーフィードを取得できましたが、現在、ユーザーIDはアプリ間で共有されていません。また、facebookは 新しいAPI を作成しました。これは、一部のパートナーのみが利用できることです。

そのため、現時点では、ユーザーがアプリを使用していない限り、パブリックユーザーフィードを取得することはできません。ただし、ページフィードは引き続き取得できます。

古いバージョン

この回答はグラフAPI v1に対するものでした

したがって、これを使用する必要がありますhttps://graph.facebook.com/529628444?fields=feed&access_token=YOUR_TOKEN

そして、必要なのがパブリックデータのクエリだけであれば、次のようにしてAPPトークンを作成できます。

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

ユーザートークンを使用する代わりに、このトークンを使用します。

11
Fabio Antunes

この投稿が古すぎるかどうかはわかりませんが、問題の解決策を探していたときに見つけました。

とにかく、私がパブリックユーザーからフィードを取得する方法を示します。

        var fbul = "https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=[AppID]&client_secret=[AppSecret]";
        var fburl = "https://graph.facebook.com/201317759900688?fields=feed&";

        $.get(fbul, function(auth_token){
            $.ajax({
                dataType: "jsonp",
                url: fburl+auth_token,
                success: function(res){
                    console.log(res);

                }
            });
        });

そしてここで少し説明:facebook開発コンソール( https://developers.facebook.com )にアクセスし、新しいWebアプリを登録する必要があります。上部のナビゲーションの[マイアプリ]に移動し、[新しいアプリの追加]に移動するだけです。それが完了すると、アプリIDとアプリシークレットにアクセスできます。

最初のリンク「var fbul」は、フィードにアクセスするために必要なaccess_tokenを取得することです。

var fbul = "https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=[AppID]&client_secret=[AppSecret]";

[AppID]と[AppSecret]を独自のキーに変更するだけです。

2番目のリンクはフィードへのアクセスです(ajaxリクエストで追加するため、ここではacces_tokenを追加しません)

var fburl = "https://graph.facebook.com/201317759900688?fields=feed&";

ここの数字(2013177599 ....)は、公開サイトからのチャンネルIDです。その番号を取得するには、 http://findmyfacebookid.com/ にアクセスし、パブリックユーザーのFacebookのURLを入力します。

それはあなたが必要とするほとんどすべてです。

次のようにajaxリクエストを記述します。

$.get(fbul, function(auth_token){
            $.ajax({
                dataType: "jsonp",
                url: fburl+auth_token,
                success: function(res){
                    console.log(res);

                }
            });
        });

コンソールに結果が表示されます。

成功関数を使用して、希望する方法で結果を処理します。

5
Daniel