自分が管理するfacebookページにページの管理者として投稿する方法
普通のページに対してapiでメッセージを書き込むと個人のプロフィールアイコンが出てしまいます。
それをFacebookページの管理者として投稿する方法です。
ページの管理者として投稿することで、ページに「いいね」してくれた人のウォールに表示されます。
個人のアクセストークンを使って、その人が管理者であるページを一覧で取得する
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
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からの戻り値