Facebookページの投稿にAPIでいいねしてみた

Facebook APIに手こずっている坂本です。

 

昨日投稿した記事にVA Social Buzzの製作者様からツイートをいただきました。

やはり使い方が間違っているとのことでした。

 

Facebookページのユーザーネームは個人アカウントページではなく、著名人などとしてページを作り、そのページのユーザーネームを記述するんだそうです。

そらそうですよね…

 

でも、そうするとページ毎の評価ができないというネックがあったので

作ったFacebookページの投稿に対していいね出来ればと思いやってみました。

 

 

投稿にAPIでいいねできるのか

色々みていましたが、それらしい記事を発見できず、諦めかけていましたが

こんなもの見つけました。

なんだできるじゃないか!

 

curlでテストしてみる

早速curlでリクエスト投げてみる

curl -X POST https://graph.facebook.com/1423417931298673/likes
{"error":{"message":"An access token is required to request this resource.","type":"OAuthException","code":104,"fbtrace_id":"HvigDMRKoar"}}

もちろんエラーですよね。知ってます。

リクエスト送るのにアクセストークンは必須です

っていってるのでパラメータにつけてあげよう!

ん?どこでとれるの?

 

そこでいいもの発見しました。

FacebookのグラフAPIエクスプローラー

とりあえず試すにはいい感じ。

 

 

グラフAPIエクスプローラーを使ってみる

簡単にテストしたいので正規方ではないですが、やっちゃいます。

 

FacebookのグラフAPIエクスプローラーにアクセスして貼ってあったアクセストークンで投げてみる

curl -X POST https://graph.facebook.com/1423417931298673/likes -d 'access_token=EAACEdEose0cBAC5s57tFIFjLDdJsI9ogb5640qxepRqB5TLPQ27AZC21PYrRaZAwD2BmM4FJ0e9jJt1cIypt5sx3k6DbmZBI4n9SovtQGhs9h6xQhGWhouIyAZA40XFZBmya3B1qxMa3AyuuZC0MgX8kblLiT8KsbcXoukeufDSQZDZD'
{"error":{"message":"(#3) Publishing likes through the API is only available for page access tokens","type":"OAuthException","code":3,"fbtrace_id":"HbaS8tXgSz7"}}

そのいいねはページアクセストークンがいるよ

と言っているのでパラメータにつけてあげよう!

ん?どこでとれるの?

 

そこでまたいいもの発見しました。

青枠部分を選択して

緑枠部分のページアクセストークンからアクセスしたいページを選択します

そうすると赤文字の部分にtokenが表示されます。

 

早速これで投げてみよう!

curl -X POST https://graph.facebook.com/1423417931298673/likes -d 'access_token=EAACEdEose0cBAFeFQQWbkaE3Xktt7bnWE2uTR0ZBmw4s4cYLIMe2OPbEwqwjDyCWwXwb2BMnsGf20AployZA6gdcsWdgAq0la02kKJrTV7HMgnScn6KynE00q7j5pEQxobWpNHj0mr8QrmZBjlv0lqFH7sJw4Md1rQZB80sXZCwZDZD'
{"error":{"message":"(#200) Requires manage_pages and publish_actions to manage the object","type":"OAuthException","code":200,"fbtrace_id":"BOU8c7aQglj"}}

お!200!と思ったら違う…

manage_pagesとpublish_actionsが必須だよ

って言ってます。

と言っているのでパラメータにつけてあげよう!

そもそもそれなんだよ。。。

 

Google先生に聞いてみた

ページアクセストークン

これらのアクセストークンはユーザーアクセストークンに似ていますが、Facebookページに属するデータの読み取り、書き込み、変更を行うAPIに対してアクセス許可を提供する点が異なります。ページアクセストークンを取得するには、まずユーザーアクセストークンを取得してから、manage_pagesアクセス許可をリクエストする必要があります。ユーザーアクセストークンを取得したら、Graph APIを介してページアクセストークンを取得します

なるほど

要するにアクセストークン自体にオプションみたいなのがついてるんですね…

すごいけど、面倒。。。

 

そもそも今もってるトークンはどうなってるんだ?

またまたいいもの発見

Facebookのアクセストークンツール

このページにトークン貼り付ければ詳細な情報が確認できてしまう。

 

 

アクセストークンツールを使ってみる

青枠部分が現在の付与されてるオプションになります。

manage_pagesとpublish_actionsが必須だよ

といわれているので

publish_actionsが足りないのでつけてあげましょう。

 

これは先ほどのグラフAPIエクスプローラーのところで設定できます。

これを設定して取得したアクセストークンで再度リクエスト

 

curl -X POST https://graph.facebook.com/1423417931298673/likes -d 'access_token=EAACEdEose0cBAFeFQQWbkaE3Xktt7bnWE2uTR0ZBmw4s4cYLIMe2OPbEwqwjDyCWwXwb2BMnsGf20AployZA6gdcsWdgAq0la02kKJrTV7HMgnScn6KynE00q7j5pEQxobWpNHj0mr8QrmZBjlv0lqFH7sJw4Md1rQZB80sXZCwZDZD'
{"success":true}

おーーーーー!!

 

Facebookを確認してみると

いいね出来てるーー!!!

 

ん?ちょっとまてよ、これもしかして自分のページしかできないのでは?

 

 

整理してみる

post-id/likes/をするにはページアクセストークンが必要

ページを登録していないユーザーだとページアクセストークンは取得できない

んじゃ無理じゃん。。。

 

まとめ

graph APIを使ってpost-id/likes/にリクエスト送ることで、API経由で投稿にいいねすることはできる。

しかし、他のユーザーからいいねしてもらうようにAPIを仕込むことは不可能?

 

※ドキュメントの少なさや公式のReferenceを見る限りの個人的な判断です

 

当分おとなしく記事URLで我慢しておきます。

それでは!

Leave a Reply