facebookページに外部からウォールに投稿する方法

facebookページに外部からウォールに投稿する方法を調べていたのでメモ。


1.facebookアプリの登録

アプリ登録をして、App IDとアプリの秘訣を取得。
http://www.facebook.com/developers/


2.OAuth認証でcode取得

下記のURLのどちらかを使って、OAuth認証を行います。

https://graph.facebook.com/oauth/authorize?client_id=【App ID】&redirect_uri=【登録したドメインの適当なコールバックURL】&scope=offline_access,publish_stream,user_status,read_stream,status_update,manage_pages

https://graph.facebook.com/oauth/authorize?client_id=【App ID】&redirect_uri=【登録したドメインの適当なコールバックURL】&scope=offline_access,publish_stream

どちらを選ぶかによって、ウォールの投稿者が違います。
①の場合だと、ユーザとして投稿される。
②の場合だと、facebookページとして投稿される。


OAuth認証が終わると、URLアドレスに【コールバックURL?code=xxxxxxxxxx】となって帰ってくる。


3.ユーザのアクセストークンを取得

2で取得したcodeを使ってユーザのアクセストークンを取得します。

https://graph.facebook.com/oauth/access_token?client_id=【アプリID】&redirect_uri=【コールバックURL】&client_secret=【アプリの秘訣】&code=【2のコード】

アクセスすると、【コールバックURL?access_token=ユーザアクセストークン】となって帰ってくる。


4.ファンページのアクセストークンを取得

さっき取得したのは、ユーザのアクセストークン。
必要なのはファンページのアクセストークンなので、それを取得します。

https://graph.facebook.com/me/accounts?access_token=ユーザアクセストークン

アクセスするとname、access_token、category、idの情報が2グループ程度表示されます。
『category』が『Application』になっていない方の『access_token』を使用します。
Applicationのアクセストークンを使用すると、アプリ側のウォールに投稿されてしまいます。


5.投稿

必要な情報がそろったので、下記サンプルのような感じでポストする。

<form action="https://graph.facebook.com/ファンページのID/feed" method="post">
    <input type="hidden" name="access_token" value="アクセストークン" />
    <input type="hidden" name="picture" value="http://xxxxxxxx.xx/img/logo.gif" />
    <input type="text" name="message" value="テストメッセージ" />
</form>