追記:このあとfacebook対応に成功?しました。
このところ少し暇があったので、Fafcebook投稿機能をHenPitsuに追加しようとしてみました。Twitterでもいいのですが、TwitterはiOS5ではOSのAPIでサポートされるようなので、そちらに任せようかと思い後回しにしてあります。
@IT: iOSからFacebook APIを使ってWallに投稿するには などを参考にするわけですが、ここには幾つかの落とし穴がありました。
まず、やりたいことを説明すると、
- HenPitsuで作った画像を「Facebookに送る」ボタンを押すか何かする
- 適切に認証を行った上で、画像に対するコメントを入力するダイアログ画面を表示する
- ダイアログで入力したコメント付きの画像が、自分のウォールに表示される
というのが目標です。ツイッターと同じような使い方になるでしょうか。
まず、前記リンクの記事にも画像を投稿するように見える記述があるのですが、これは画像そのもののデータを送るのではなく画像のURLを送っているだけなのでした・・・だとすればどこにアップロードするかという問題が生じます。
FacebookのAPIを使うと、アルバムに写真をアップロードできます。
- アルバムに写真をアップロード
- アップロードした写真のURLを調べる
- そのURLをpictureに指定して、ダイアログを表示する
というふうにすれば、Flickrなどの別のところにアップロードせずともうまくいくはずです。このほうが認証も1回で済むし、皆さんがFlickrのアカウントを持っているわけでもないでしょう。
1,2までは問題なく出来ました。問題は3のステップで、このような画面が表示されてしまいます:
他でも同じ問題で引っかかっているようです:
FBCDN image is not allowed in stream, How can this be?
自社サーバーの中の画像を用いた投稿を許すと、循環参照のようになってパフォーマンスが低下するということなのでしょうか。とにかく許されないようです。
最初やりたかったことは、FacebookのiPhoneアプリや、PCのホームページでは実現できています。そして、ウォールに写真を投稿すると、アルバムに「ウォールの写真」という項目が作られますので、内部的には同じことになっているのではないでしょうか。
同様の方法は、Facebookの指定するメールアドレスに、画像つきのメールを送るとタイトルがコメントになるという機能があるのでそれで簡単に実現できます・・・
自分の勉強にはなりましたし認証などもできるようになったのでプログラミングのスキルは上がったと思いますが、アルバムに投稿できるだけではあまり意味が無いですね・・・facebook対応はお蔵入りにしようかと思いはじめています。
あるいはFlickrなど別のところにアップロードするようにしてもいいのですが・・・そうすればTwitter対応も比較的簡単に実装できそうですが・・・面倒なので今日は寝ます。
追記:このあとfacebook対応に成功?しました。
