logo

サイト内検索
ココログ最強検索 by 暴想

最近のトラックバック

無料ブログはココログ

Facebook

Facebook APIで出来ない事:Pageによる他のPageへの投稿

Salesforceから、Facebookへの連携を研究していて、しばらくFacebook APIというものを扱ってみましたが、どうも現時点では、あまり出来の良いものでは無いという印象です。
とにかく、

これが出来るなら当然、こうすれば、これも出来るよね!

と思うようなところのあちこちで、理不尽に出来ない事が多すぎる。

やっているうちに何が出来て何が出来ないのか訳がわからなくなってきたので、ここで整理もかねて、Facebookでやりたいのに出来ないことをいくつか書いておきます。

まず、今回の出来ないことは、

Facebook Page名による他のPageへの投稿

Facebookページを運営するとして、Salesforce側のDBにある情報をもとに、自分のFacebookページや、他のFacebookページに投稿する機能を考えています。

まず、Facebookページへの投稿は、以下のようなURLを使用して、graph APIで出来ます。

 curl -F 'access_token=<アクセストークン>' -F 'link=xxxx' -F 'picture=xxxx' -F 'caption=xxxx' -F 'description=xxx'  https://graph.facebook.com/<ページのID>/feed  ---①

なお、投稿はPOSTメソッドを使用する必要があるので、curlコマンドで書いておきます。
ここで、アクセストークンには、publish_stream権限を持たせたものである必要があります。

しかし、この場合、投稿された記事は私自身の投稿となって、私の顔が記事に載ることになります。しかし、ビジネスを目的として投稿する以上、私的な投稿ではまずいので、ここはやはり、自分の運営するFacebook Pageの名前で投稿する必要があるわけです。
実は、「誰から投稿されたか」という情報は<アクセストークン>の中に持っています。そこで、自分のFacebook Pageのアクセストークンを入手することが必要になります。
それは、以下のようなURLを使用して、graph APIで出来ます。

https://graph.facebook.com/me/accounts?access_token=<アクセストークン>  ---②

ここでのアクセストークンには、publish_stream,offline_access,manage_pages権限を持たせます。

上記、URLの結果、自分の運営するPage(それ以外にアプリ等も)の一覧が入手でき、その中に、各Pageのアクセストークンがあります。

ここから、使用したいPageのアクセストークンを取って、①のURLに使用してPOSTすれば、Facebook Pageの名前で、その同じFacebook Pageに投稿する事は出来ます。

ここで、自分のFacebookページ以外にも、同様のジャンルのページに記事を投稿して、ファンを増やしたいとします。そこで、①のURLに自分のFacebookページのアクセストークンを使用して、他のPageのID宛に投稿しようとすると、これが出来ないのです!

 "error":{"type":"OAuthException","message":"(#200) Posts where the actor is a page cannot also include a target_id"}}

というエラーになります。

当然、対象ページには、投稿権限はあります。実際、手作業では投稿できるページです。

エラーメッセージの内容もわかったようなわからないような?「target_id」というのが使えないと言っているが、そんなパラメーターは使っていない。つまりは、Pageから投稿する場合は、ターゲットが他のものじゃだめだ、と言っているようにも思えるが、その理由が、セキュリテイ上の理由で、わざとそうしているのかも不明確。

この件に、関しては以下のフォーラムのページ議論されています。

http://forum.developers.facebook.net/viewtopic.php?id=95325

これは、バグだということで、報告したにもかかわらず、再現情報不足?とかの理由で勝手にCloseされたと言っている。

ここで、あきらめずに別の方法を探したところ、Feed Dialog という機能を見つけました。

http://developers.facebook.com/docs/reference/dialogs/feed/

以下のようなURLでダイアログを開いて投稿します。

 http://www.facebook.com/dialog/feed?
   app_id=<アプリケーションID>&
   link=xxxx&
   picture=xxxx&
   name=xxxx&
   caption=xxxx&
   description=xxxx&
   message=xxxxx&
   redirect_uri=<リダイレクトURL>&
   from=<自分のページID>&
   to=<投稿先ページID>

これだと、いちいち、ダイアログを開いてボタンを押す必要があるのですが、一応、Page to Pageの投稿が出来ました。

ところが!

ある日突然、これも出来なくなりました。

現在、toを指定すると、以下のようなエラーになります。

エラーが発生しました。

We're working on getting this fixed as soon as we can.

なんか、エラーメッセージ的には「今対応中、なるべく早く直します」と言っているようなので、バグと認めた感はあるが....それにしても、発見してからもう2日以上も直っていない。

少なくとも、7/11時点でこの機能で投稿した記録があるので、そこまでは動いていたはず。

Feed Dialogのマニュアルページにあるディスカッションの欄でも、ここ数日で突然動かなくなったという意見があるので、私の勘違いではなさそう。

やってられない..というのが感想です。

さて、これだけじゃなく、他にも出来るはずと思ったことが出来ないのが、あるんだよ..

それは、おいおい、書いていくつもりです。