twitter、Facebook はもちろんのこと mixi や Gree へリンクを共有する仕組みを実現する機能を実装していたのですがちょいとはまりました。開発環境で動作確認を行っていると外部からのアクセス制限をかけている関係で各種ソーシャルサービスで正常に動作しません。
リンク共有のアクションを行うとソーシャルサイト側からコンテンツのチェックされ Open Graph Protocol のメタタグが読まれてリンク情報が表示されるという流れなので、Basic認証やIPアドレスなどのアクセス制限がされていると正常に動作しないわけですね。
対処方法ですが、すべてアクセス許可するのがOKなら問題ないわけですが、一般向けには公開したくないのであれば各ソーシャルサイトの共有機能からのアクセスだけ許可すれば良いです。
調べてみると各サービスでリンク共有すると以下のようなUserAgentでアクセスされることがわかりました。これでチェックすれば行けそうですね。
- Twitterbot/0.1
- Gree Social Feedback/1.0
- facebookexternalhit/1.1
- mixi-check/1.0