2012年6月27日水曜日

Facebookのアクセストークンのいろいろ

Facebookのアクセストークンでいろいろハマったのでメモがてら。

Facebookには三種類のアクセストークンがあります。(2012年6月現在)
  1. user access token
  2. page access token
  3. app access token
それぞれ簡単に説明すると、user access tokenはその名の通り
Facebookの各ユーザごとに承認のいるとても厳しいアクセストークンです。 これを取得すると、apiとかでいろいろできますね。
できることは要求する権限によって違うので割愛します。

で、残り2つですが(最近追加されたのかな??)、
それぞれFacebookページ用のアクセストークンと
アプリ用のアクセストークンです。

とりあえず2012/7/5でoffline access tokenという、
それさえあれば何でもできちゃったアクセストークンがなくなるので
今後はpage access tokenとかapp access tokenとかで
どうにかしていくことになります。

ってことがFacebook公式デベロッパーサイトに書いてます。


ここで注意したいのが
user access token、page access tokenは期限が最大60日
app access tokenは期限がないことです。

アクセストークンの期限がくると取得し直す必要があります。
つまりapp access tokenだけでいろいろやりたいわけです。

今回はアプリからFacebookページに自動投稿するバッチを作ろうと思い、
投稿するアプリのapp access tokenがあればいけるかと思いぐぐり始める。。
んでたどり着いたのがこの記事

app access tokenでウォールに投稿できるっぽい!
てことで実装してみる。

今回は写真を投稿したかったので、

$post_data = array(
'source' => '@' .$finename, 
'message' => $message,
 'access_token' => $this -> facebook_app_access_token
 );

$post_result = $facebook -> api('/' . $this -> facebook_page_id . '/photos', 'post', $post_data);
            

だいたいこんな感じ。
url叩いてみると。。
A user access token is required to request this resource.

えw
user access token求められてる。。。

投稿先を自分のウォールにしてみても、写真投稿を普通にfeedに投稿にしてみても同じでした。。
アクセストークンをpage access tokenもしくはuser access tokenに変えると投稿できました。
けどこいつらは期限が期限が60日。。

自動投稿するには期限のないapp access tokenを使いたい。。

けどできませんでした。

app access tokenのみでウォール投稿できた方がいらっしゃいましたらぜひお話お聞かせください。

0 件のコメント:

コメントを投稿