自分が管理するfacebookページにページの管理者として投稿する方法

普通のページに対してapiでメッセージを書き込むと個人のプロフィールアイコンが出てしまいます。
それをFacebookページの管理者として投稿する方法です。
ページの管理者として投稿することで、ページに「いいね」してくれた人のウォールに表示されます。

個人のアクセストークンを下記の権限で取得する

status_update,publish_stream,manage_pages,offline_access

個人のアクセストークンを使って、その人が管理者であるページを一覧で取得する

https://graph.facebook.com/me/accounts?access_token=個人のアクセストーク

{
   "data": [
      {
         "name": "ページ名",
         "category": "Website",
         "id": "ページID",
         "access_token": "ここの値をメモ"
      },
}

↑で取得したアクセストークンを使ってfacebookページにpostします

 curl -F 'access_token=ここに取得したアクセストークン' \
 -F 'message=Check out this funny article' \
 -F 'link=http://www.example.com/article.html' \
 -F 'picture=http://www.example.com/article-thumbnail.jpg' \
 -F 'name=Article Title' \
 -F 'caption=Caption for the link' \
 -F 'description=Longer description of the link' \
 -F 'actions={"name": "View on Zombo", "link": "http://www.zombo.com"}' \
 -F 'privacy={"value": "ALL_FRIENDS"}' \
 -F 'targeting= {"countries":"US","regions":"6,53","locales":"6"}' \
 https://graph.facebook.com/ここにページID/feed

ページとしてpostされる

以上

facebookで外部から直接特定の相手にメッセージを送信する方法

Facebook APIでメッセージを送信する仕組みは提供されていないらしい

http://developers.facebook.com/docs/reference/api/message/
によれば、将来的に/inboxというエンドポイントが新たに提供されるようですが、現時点では直接通知できる仕組みは提供されないようです。
http://forum.developers.facebook.net/viewtopic.php?id=78618
に「email」に対する権限を取得するしかないとありますが、要は直接メールアドレスを取得して、メールを送信するってことですよね。

○他の方法を考えてみた

まずは自分自身にメッセージを送信する時のパケットをwiresharkでキャプチャして

○パケットの中身を見てみる

ここらへん怪しい!

○送信してるパケットと同じ動きをformで再現

パラメーターを色々変更しつつ、余分な物を省いて完成!

<html>
<head>
</head>
<body>
  <form method="POST" action="http://ja-jp.facebook.com/ajax/gigaboxx/endpoint/MessageComposerEndpoint.php?__a=1 HTTP/1.1">
  <!-- 件名 -->
  <input type="hidden" name="subject" value="ここに件名" />
  <!-- 本文 -->
  <input type="hidden" name="status" value="ここに本文" />
  <!-- 宛先 -->
  <input type="hidden" name="ids[0]" value="ここに相手のユーザID(例:10000173XXXXXXX)" />
  <!-- 新規のメッセージ送信(send_new)か、既存メッセージへの返信か(send_reply) -->
  <input type="hidden" name="action" value="send_new" />
  <!-- 不明 -->
  <input type="hidden" name="fb_dtsg" value="AQCoc4SL" />

  <input type="submit" value="送信">
  </form>
</body>
</html>
○結果

facebookのメッセージを特定の相手に送信することが出来た。

○おまけ

facebookからの戻り値