新機能!!facebookアプリケーションからユーザーへの通知を試してみた
先日のdeveloper blogで、facebookアプリケーションからユーザーへの通知機能が発表されていたので試してみました。
http://developers.facebook.com/blog/post/2012/08/31/reach-users-1-1-with-the-notifications-api/
新機能の概要
今までfacebookアプリケーションからユーザーへのコミュニケーション方法はありませんでした。
そのため、どのアプリもユーザーになり替わって、ウォールに投稿したり、アプリリクエストを送ったりということをしていましたが、今回の新機能によりアプリケーション→ユーザーの一方通行ですが、直接コミュニケーションを取ることができるようになります。
というわけで試してみた
公式のdocumentを見ると、方法は至って簡単でしたが、いくつかポイントがあるのでまとめてみました。
1. 使用できるのはfacebook上のアプリのみ
このAPIを使用できるのは、canvasの設定をしているapps.facebook.comドメインに設置されているfacebookアプリのみで、webサイトと連携するタイプや、ネイティブのアプリ等は使用できません。
canvasの設定をしていないアプリケーションでAPIを実行してみると以下の様にエラーが返ってきます。
(#200) Only web canvas apps can send app notifications
2. UserTokenではなくApplicationToken
APIを実行するために必要な値はUserTokenではなく、ApplicationTokenです。
UserTokenとは、OAuth認証をした上で発行されるユーザー固有の文字列のことです。
普段はこのTokenを用いて、ユーザーになり替わりウォール投稿などを実行しています。
ApplicationTokenとは、facebookアプリを作成した時点で発行される固有の文字列であり、以下のルールで定められています。
AppID|AppSecret
ユーザーになり替わるのではなく、アプリケーションとしてユーザーに通知を送るため、使用するのはアプリケーション固有のTokenなのです。
パラメータは3つ
- href: 通知をユーザーがクリックした際の遷移先。アプリケーションURLの相対パスを設定する。
- template: 通知の内容。ユーザーIDを含めればユーザー名を表示することも可能。
- ref:よくわからない。なくても実行できた。
いざ実行
適当にcanvasを設定してあるアプリケーションを作成して、通知APIを試してみました。
POST https://graph.facebook.com/hiroki.itani/notifications? access_token=%ApplicaitonToken%& text=新機能!通知APIを試してみる!& href=index.html
キタ!!!!!!!!!!!!!
クリックしてみると遷移先はアプリケーションのページへ。
http://apps.facebook.com/%app%/index.html?fb_source=notification&ref=notif¬if_t=app_notification
hrefは遷移先の相対的なパスを指定するので、index.htmlという値を渡すと上記のような結果になります。
ユーザー名もIDを渡すと名前も表示できるようで試してみました。
POST https://graph.facebook.com/hiroki.itani/notifications? access_token=%ApplicaitonToken%& text=イケメンの{100000354296851}& href=index.html
怒られました。イケメンじゃないからでしょうか?
(#200) Cannot tag users who have not installed the app
どうやらアプリを許可しているユーザーでないと名前は表示できないらしいです。
というわけで、認証してもらって再度実行。
キタ!!!!!!!!!!!!!
あくまでも指定したユーザーへの通知であって、名前を使用したユーザーへは通知は飛びませんでした。
まとめ
嬉しい機能だけど、スパム増えそうだなおい。
「明らかにイケメンじゃないのにイケメンって通知が来てる!!これきっとスパムよぉぉぉぉぉおおおお!!!!!」
という方は、通知のバツ印を押して、すぐさまオフにしましょう。