2008-09-16 mixi openidに対応したファイルあぷろだの作り方(修正)
■[openid][webサービス]mixi openidに対応したファイルあぷろだの作り方(修正)

mixi openidプラットフォームを利用すると、通常のユーザ認証作業を代行してくれるだけでなくて、マイミクのみ認証をしたり、指定のコミュニティーに入っている人だけ認証を実施したりできる。
そこで今回は、指定のコミュニティーに所属している人だけがファイルのアップロード・ダウンロードが可能なwebサービスを作ってみる。本気でサービス化する気は無いので、ひどい完成度です。
まずこのリンクをクリックしてみてください、いきなりmixiに飛ばされると思います。
mixiでは、mixiアカウントを持っていて且つニコニコ動画のコミュニティーに参加している人だけが認証が通るようになっています。
ここで「認証を許可する」を選択すると元のページに戻ってきて認証が完了し、ファイルのダウンロードとかアップロードができたりするようになる。
では、ここから3分クッキングです。
まずw2boxというweb2.0ぽいファイル共有サービスのソースコードを落としてくる。
解凍して適切に配置する。この段階でちゃんとファイルのアップロードとかができるとこまで持っていく。
次にopenid対応の部分を実装する。まずPHP OpenID Libraryを落としてくる。んで、好きなとこに配置する。
そしたら下記のスクリプトを落としてきて適当な位置に配置して、w2boxのindex.phpの最初の行とかでrequireするようにする。
<?php ini_set('include_path', '***********');//PHP OpenID Libraryを置いたパス require_once 'Auth/OpenID/Consumer.php'; require_once 'Auth/OpenID/FileStore.php'; require_once 'Auth/OpenID/SReg.php'; define('SERVER_URI', 'http://60.86.8.32/nico');//サービスのURL define('SERVER_URI_RETURNTO', SERVER_URI . '?action=login');//認証成功時のリダイレクト先(変更必要なし) define('OPENID_IDENTIFIER', 'https://id.mixi.jp/community/1651291');//コミュニティのID define('FILE_STORE_DIR', '/tmp/openid/'); // 0777 ?>
OPENID_IDENTIFIERのところのコミュニティーのIDを変えれば別のコミュニティーでも利用できるはず。
セキュリティー上の問題を指摘していただいたので修正を反映しまいました。COOKIEからSESSIONを使うようにしました。ので一度ブラウザを閉じると再認証が必要になりました。
などなど、超適当に作ってみましたが、mixiのopenidプラットフォームは、他のと比べて面白いですね。勉強になりました。
参考にしたページ
- 197 http://b.hatena.ne.jp/hotentry
- 109 http://reader.livedoor.com/reader/
- 101 http://d.hatena.ne.jp/
- 95 http://www.machu.jp/diary/20080917.html
- 50 http://cgi.search.biglobe.ne.jp/cgi-bin/c_search?customid=blog&q=画像
- 33 http://www.iphooone.com/
- 32 http://b.hatena.ne.jp/
- 31 http://www.google.com/reader/view/
- 30 http://b.hatena.ne.jp/add?mode=confirm&title=mixi openid%u306B%u5BFE%u5FDC%u3057%u305F%u30D5%u30A1%u30A4%u30EB%u3042%u3077%u308D%u3060%u306E%u4F5C%u308A%u65B9 - labolo&url=http://d.hatena.ne.jp/yositosi/20080916/p1
- 28 http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/yositosi/20080916/p1

「超簡易mixi opeind ライブラリ(修正済み)」をダウンロードさせていただこうと思いましたが、どうやらサーバーが死んでいるようです。
ご確認のほどお願いいたします。