Facebookアプリ開発のためのgraph api利用法(FacebookAPIを使って人へメッセージを送信する方法)

このブログを初めて実に10年が経ちますが、初めてエンジニアっぽいタイトルです。
最近、ちょくちょくFacebookのAPIについて調べていたのですが、言及しているブログの数の少なさに唖然としたので、調べたことを備忘録と、誰かの役にたてばという思いで書いてみます。というか、この記事を書く前にGoogleのキーワードツールで「Facebook API」で月間どれくらい検索されてるものかと思って調べてみたら、なんと日本ではたったの平均3600回でした。そもそもFacebookのAPIについて調べてる人の数自体がすごく少ないんですねー。なぜでしょう、最近ちょっとしたWEBサイト作ろうと思ったらFacebook連携は欠かせない気がするのですが・・・。

さて、FacebookのAPIの使い方ですが、一言で言うとSDK(Software Development Kit)というAPIのキットがあります。

http://developers.facebook.com/docs/sdks/

これを使えばすごく簡単に使うことができます。対応しているプラットフォームは以下の4つです。

JavaScript SDK
PHP SDK
iOS SDK
Android SDK

この中で言えば、環境に依存せず使いやすいのはJavaScript SDKではないでしょうか。数あるサーバサイド言語の中でPHPが選ばれているのはFacebookがPHPで書かれているからだそうです。

さて、このJavaScript SDKを用いればログイン、友達リストの取得などいろいろ数行でできます。その辺は調べたらすぐ出てくるので割愛します。
ログインはFB.loginを利用すればできるし、友達リスト取得FB.apiの’/me/friends’を利用すればIDと名前取得できるし、さらに友達の性別なんてのも簡単に取得できます。

で、ここで問題になってくるのがユーザの友人のウォールに投稿です。ぼくはこれにかれこれ1週間近くもハマッてます。FB.apiには’/FacebookID/feed’で友人のウォールに投稿という方法が以前はできたんですが、2013年2月6日から仕様が変わったらしく、これができなくなったようです。これ、けっこー大きな変更だと思うんですが、探しても驚くほど言及しているサイトが少なくて、本当に規制されたのかと自分でも試してみたのですが、やはりできなくなってるみたいです。

■Facebook、スパム対策に力を入れる―API利用の制限などアプリのデベロッパーに大きな影響
http://jp.techcrunch.com/archives/20121010facebook-cuts-back-on-open-graph-actions-automated-wall-spam/

Facebookはまた「友だちのウォールに書き込む」を廃止した

■Open Graphアプリとウォール投稿が一部規制される詳細
http://facebook-docs.oklahome.net/archives/52077468.html

ユーザのアクセストークンを用いて、そのユーザの友だちのウォールへ投稿を行う行為が、今後の仕様変更で禁止となります。

■Needs to be updated for the February 2013 Breaking Changes

Needs to be updated for the February 2013 Breaking Changes

2月6日にfacebookのAPIの仕様変更が予定されていて、「facebook Graph APIによる友だちのウォールへの投稿」機能が廃止されます。

これはFacebookのアプリをちょっと使っただけで、勝手にウォールに投稿しまくるスパムみたいなアプリが増えたから規制されたようです。そりゃそうですよね、確かにそういうアプリが多いからぼくは信用できる企業のアプリ以外は使わなくなってしまいました。

でも、これ困るんですよねー。アプリの目的自体が人への通知みたいなサービスだと、これが使えないというのは痛いです。それで、いろいろ調べてみたんですが、ダイアログという方法を利用すれば友人に投稿自体はできるということが分かったんですよね。

http://fb.dev-plus.jp/reference/advancedtopics/dialogs/

これを使えばJavaScript SDKのFB.uiを使ってもできるし、フォームでパラメータをpostしても投稿ができます。ただ、これを使うとダイアログという名前からも分かるとおり、必ずFacebookのUIのフォーム画面から投稿することになるので、独自のフォームのみで完結しないんですよね。これがまだぼくも解決できていなくて、例えばgifteeというサービスではそれができているのでどうやってるんだろーと知りたくてしょうがないです。誰か知っていたら教えてください。そろそろ知恵袋でも使ってみようかなと思うくらいです。

さて、ここまでは調べたけど、分からなかったことなのですが、1ついいことを発見したのでシェアしてみます。それはFacebookAPIを使って人へメッセージを送信する方法です。

これ、いろいろ調べてみても載ってないし、だいたいできないって説明がされているのですが、FB.uiでダイアログを使えば送ることができたので書いときます。

 FB.ui({
  method: ‘send’,
  to:’FacebookID’,
  name: ‘hoge’,
  link: ‘http://yahoo.co.jp’,
  redirect_uri: ‘hoge.html’
 });

みたいな。
いやー、これができるのとできないとでは大違い。
だってユーザにメッセージを本当は送りたいのに、これ知らなかったらウォールに投稿しないといけないわけですからね。別に他の人に知らせなくていい情報だったらウォールに投稿する必要はないわけですから。

なんか間違ってたら訂正するので教えてくださーい。
これからもちょくちょく知らない技術に触れたときは書いてみたいと思います。目指せTechnicalBlog!

コメントを残す