サイトにFacebookページの投稿を表示する方法
すごく手間取ったのでメモしておいて、公開してなかった。
テスト用に作った https://www.facebook.com/JorokumoAtShizunami を例にして。
◆まずはfacebookページのIDを取得
https://graph.facebook.com/{username}
にアクセスすると、そのfacebookページについてのデータを返してくれる。IDもそこにいる。
例) https://graph.facebook.com/JorokumoAtShizunami
◆写真はアクセストークン無しで取得できる
これが私が手間取った一つの原因なんですが。ウォールに並ぶ写真や指定したアルバムの写真一覧のデータを取得するには、アクセストークンという認証コードみたいなのは不必要なんですね。
https://graph.facebook.com/{id}/photos
例) https://graph.facebook.com/247496375312768/photos
写真は写真だけでなく、写真と一緒に投稿したメッセージなども取得できます。だからもし投稿するとき常に写真を添えてたら、実質、投稿一覧を取得できるようなものです。
写真がアクセストークン無しで取得できるなら投稿もアクセストークン無しで取得できるだろうと勝手に思ったんですが取れないのです。なぜだFB!?
あるはずのない認証なし投稿取得メソッドみたいなのを探すのに時間かけてました。
ちゃんとドキュメントに書いてあります。
https://developers.facebook.com/docs/reference/api/page/
のconnectionのphotosには、no access token、postsにはany valid access token。
◆で投稿を取得するには
以下のようになります。
https://graph.facebook.com/{id}/posts?access_token={access_token}
アクセストークンがないと、An access token is required、アクセストークンが必要だよと言われます。
例 https://graph.facebook.com/247496375312768/posts
◆アクセストークンを取得するには
自分の経験の無さや英語力のなさにもよるのですが、アクセストークンの取得方法がよくわかりません。
Graph apiエキスプローラーというのがあって、そこでアクセストークンが発行されるのですが、こいつだと、ちょっと時間(二時間らしい)がたつと無効になってしまうのです。
https://developers.facebook.com/tools/explorer
テスト用のアクセストークンなんでしょう。
◆アプリ用のアクセストークンを取得すればいい
アクセストークンにはいくつか種類があるようなんですが、ユーザー用は二ヶ月とからしいです。それは嫌なんですけど、そもそもどうやって取ればいいかわかりません。
で、アプリ用のアクセストークンというのがあって、こいつはできることは制限されるのですが、永続的に使えるっぽいのです。制限されるといっても、facebookの公開されてるデータ(ログイン無しで閲覧できるもの)を取得する分には制限されません。
アクセストークン発行のためにアプリを作り
https://developers.facebook.com/apps
作ると発行される、APP IDというのとシークレットキーを使って
https://graph.facebook.com/oauth/access_token?client_id={APP ID}&client_secret={シークレットキー}&grant_type=client_credentials
にアクセスすると、アクセストークンをくれます。
そいつを使えば、投稿データも取得できちゃいます。
駄文だ!