Facebook APIに手こずっているHeyGです。
昨日投稿した記事に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"}}
もちろんエラーですよね。知ってます。
リクエスト送るのにアクセストークンは必須です
っていってるのでパラメータにつけてあげよう!
ん?どこでとれるの?
そこでいいもの発見しました。
とりあえず試すにはいい感じ。
グラフ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を介してページアクセストークンを取得します。
なるほど
要するにアクセストークン自体にオプションみたいなのがついてるんですね…
すごいけど、面倒。。。
そもそも今もってるトークンはどうなってるんだ?
またまたいいもの発見
このページにトークン貼り付ければ詳細な情報が確認できてしまう。
アクセストークンツールを使ってみる
青枠部分が現在の付与されてるオプションになります。
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で我慢しておきます。
それでは!