Google App Engine 上で Facebook の JavaScript SDK を使ってWebアプリを作ってるわけですが、どうもURLにポート番号が含まれているとうまく動かない様子。

サンプルアプリでも問題が起こる。サンプルアプリはただ単に Facebook にログインして、そのユーザーの情報を取ってきてるだけ。Chrome 9 だとうまく動くけど、IE 9, Opera 11 だとダメで、

API Error Code: 191API Error Description: The specified URL is not owned by the applicationError Message: redirect_uri is not owned by the application.

というエラーが表示される。

この時、Facebook のアプリページのサイトURLは「http://localhost:GAEのポート番号」と登録してあり、ブラウザからは「http://localhost:GAEのポート番号」に接続している。

これをサイトURL「http://localhost/」、ブラウザ「http://localhost:GAEのポート番号」に変えると上記のエラーは表示されなくなるけど、当然リダイレクト先のページにつながらないわけで、ログイン処理自体がうまくいかなくなる。

これは全くの推測なんだけど、IEとOperaでは JavaScript SDK がうまいことポート番号を拾えてないんじゃないかな?

とりあえず Chrome だけ使って開発してます。