-オープンソースのSNSエンジン OpenPNEプロジェクト-

最新ブログ

Home

OpenPNE 3.1.3.1 リリースのお知らせ

10 / 07 水曜日 2009

OpenPNE 開発チームの海老原です。

本日 2009/10/07(水)、 開発版 OpenPNE 3.1.3.1 をリリースしました。

OpenPNE 3.1.2 から OpenPNE 3.1.3 へのアップデートが正しくおこなえない件についてでお知らせしたように、 OpenPNE 3.1.3 には OpenPNE 3.1.2 からのアップデートにおいて問題がありました。

そのため、この問題に対応したものを急遽、 OpenPNE 3.1.3.1 としてリリースします。

バグ修正

  • #84: openpne:migrate fails in installing a plugin that doesn’t have any models (モデルのないプラグインをインストールしようとすると openpne:migrate が失敗する) (Kousuke Ebihara)

バンドルされるプラグインの追加・更新情報

なし

注意事項

3.0.x に同梱されていたプラグインの一部は Doctrine に未対応のため、現時点の OpenPNE 3.1.3 ではご利用いただけません。

同梱されているプラグインは以下となります。

  • opAuthMailAddressPlugin
  • opAuthMobileUIDPlugin
  • opAuthOpenIDPlugin
  • opCommunityTopicPlugin
  • opWebAPIPlugin
  • opDiaryPlugin
  • opBlogPlugin
  • opOpenSocialPlugin
  • opAshiatoPlugin

なお、今後プラグイン側のバージョンアップによって同梱されるプラグインが増える場合があります。
詳しくは各プラグインのリリース情報をご覧ください。

バージョンアップ・インストール

バージョンアップ

バージョンアップ方法は、OpenPNE3.1 バージョンアップ手順 をご覧ください。

インストール

インストール方法は、同梱の OpenPNE3.1 セットアップ手順 をご覧ください。

ダウンロード・チェンジログ

ダウンロード

/pne-downloads

チェンジログ

ChangeLog

OpenPNE 3.1.2 から OpenPNE 3.1.3 へのアップデートが正しくおこなえない件について

10 / 07 水曜日 2009

開発チームの海老原です。
先日リリースした OpenPNE 3.1.3 へのアップデートが、不具合および手順の漏れにより正しく完了できないことがある場合について、詳細と対応方法についてご連絡します。

問題

OpenPNE 3.1.2 から OpenPNE 3.1.3 にアップデートする場合、「You must pass a valid path to a directory containing Doctrine models」というエラーメッセージが出力されてアップデートが中断してしまう。

原因の概要

  • ・アップデート手順の漏れ
  • ・OpenPNE 3.1.3 でおこなったバグ修正の考慮不足

原因の詳細

OpenPNE 3.1.3 には、 opOpenSocialPlugin 0.9.0 の追加が含まれています。 OpenPNE のバージョンアップをおこない opOpenSocialPlugin をインストールする際、自身の管理しているテーブルにデータロードをおこないますが、 OpenPNE 3.1.2 までのバージョンではこれが正常に動かず、アップデートが続行できないことが判明したため、新しくインストールされたプラグインのテーブルを作成するように OpenPNE 3.1.3 に向けて修正をおこないました。

しかし、この修正は「OpenPNE 3.1.2 時点のプラグインディレクトリを OpenPNE 3.1.3 にコピーしたのちに、 openpne:migrate を実行する」ということのみを想定しておこなわれたものでした。そのせいで、今回新しくインストールされる以外のプラグインに関する考慮がされておらず、自分自身でテーブルを持たない opAuthMailAddressPlugin のインストールが openpne:migrate 時におこなわれるとエラーが出てしまっていました。

以前から紹介していた手順では、 openpne:migrate の前にプラグインのコピーをおこなっていないため、プラグインをすべて新しくインストールし直していました。そのため、バグ修正時に想定していた状態とは異なってしまい、アップデートが続行できないという事態になっていました。

本件についての対処

  1. 1. アップデート手順書で示している手順に、プラグインディレクトリのバックアップおよびコピーについて追記しました。
    この手順は、 OpenPNE 3.1.3 以降のみならず、すべての OpenPNE 3.1.x のバージョンアップにおいて本来必要なものでした。
  2. 2. テーブルを定義しないプラグインでも openpne:migrate が正しくおこなえるように、ソースコードの修正をおこないます。

2. については、この対応をおこなったバージョンを 3.1.3.1 もしくは 3.1.4 として早急にリリースすることを考えています。

問題が発生した場合の対応方法

1. データベースのバックアップ、元ファイルのバックアップの両方を取っている場合

アップデート手順に従って、アップデートをやり直してください。

2. データベースのバックアップのみを取っているか、バックアップを取っていない場合

以下の SQL を実行してください。

UPDATE sns_config SET value = “0” WHERE name LIKE “%Plugin_needs_data_load”;

今回インストールされる二つのプラグインをアンインストールしてください。

$ ./symfony opPlugin:uninstall opOpenSocialPlugin $ ./symfony opPlugin:uninstall opReviewPlugin

もう一度 openpne:migrate タスクを実行してください。

$ ./symfony openpne:migrate

OpenPNE 3.1.3 以降用に OpenPNE Web API のドキュメントを作成しました

10 / 05 月曜日 2009

開発チームの海老原です。

以前お知らせしたように、 OpenPNE 3.1.x では、他アプリケーションとの連携のために OpenPNE Web API の強化がおこなわれています。

OpenPNE Web API はまだまだ改善の余地が多く残されている機能ですが、現状でも実用には耐えるものになっているため、 OpenPNE 3.1.3 以降に同梱された opWebAPIPlugin を対象としたドキュメントを執筆しました。

以下の URL から閲覧できるようにしたので、是非ご覧ください。

OpenPNE Web API では、かなり柔軟に SNS 内のデータを扱うことができるようになっています。このドキュメントを活用して、 SNS と強力に連携した面白い外部アプリケーション作りにチャレンジしてみてください!

OpenPNE 3.1.3 リリースのお知らせ

10 / 04 日曜日 2009

OpenPNE 開発チームの海老原です。

本日 2009/10/05(月)、 開発版 OpenPNE 3.1.3 をリリースしました。

今回は GitHub にレポジトリを移しての最初のリリースになります。 fork や pull request は大歓迎ですので、是非みなさんも開発に参加してみてください。

機能追加・機能改善

  • #6: SNS内名称設定機能の追加 (Kousuke Ebihara)
  • #5: Doctrine_QueryでJOINしている箇所をJOINしないコードに変更 (Eitarow Fukamachi)
  • #14: ログイン停止機能の追加 (Shinichi Urabe)
  • #15:携帯用絵文字入力などが可能なwidgetを作成する (Shogo Kawahara)
  • #19:SNSフッター機能の追加 (Shingo Yamada)

その他の機能追加・機能改善については、 ChangeLog をご覧ください。

バグ修正

  • #17: opPluginSyncTask::getPluginList() で Proxy 設定が適用されていない (Rimpei Ogawa)
  • #21: symfonyのタスク実行時の最初にWarningが出る (Shogo Kawahara)
  • #24: 初回の openpne:install 後、プラグインの fixture ファイルがロードされないことがある (Kousuke Ebihara)
  • #22: 管理画面のメンバー検索で日付型の検索が「全員に公開」以外ヒットしない (Shogo Kawahara)
  • #31: openpne:migrate is failed on installing new plugin that loads data (データロードをおこなうプラグインをインストールした場合に openpne:migrate が失敗する) (Kousuke Ebihara)

その他のバグ修正については、 ChangeLog をご覧ください。

バンドルされるプラグインの追加・更新情報

以下のプラグインが追加されます。

  • opOpenSocialPlugin 0.9.0
  • opAshiatoPlugin 0.9.0

注意事項

3.0.x に同梱されていたプラグインの一部は Doctrine に未対応のため、現時点の OpenPNE 3.1.3 ではご利用いただけません。

同梱されているプラグインは以下となります。

  • opAuthMailAddressPlugin
  • opAuthMobileUIDPlugin
  • opAuthOpenIDPlugin
  • opCommunityTopicPlugin
  • opWebAPIPlugin
  • opDiaryPlugin
  • opBlogPlugin
  • opOpenSocialPlugin
  • opAshiatoPlugin

なお、今後プラグイン側のバージョンアップによって同梱されるプラグインが増える場合があります。
詳しくは各プラグインのリリース情報をご覧ください。

バージョンアップ・インストール

バージョンアップ

バージョンアップ方法は、OpenPNE3.1 バージョンアップ手順 をご覧ください。

インストール

インストール方法は、同梱の OpenPNE3.1 セットアップ手順 をご覧ください。

ダウンロード・チェンジログ

ダウンロード

/pne-downloads

チェンジログ

ChangeLog

今週のOpenPNE3デモサイト委員会

10 / 02 金曜日 2009

OpenPNE3デモサイト委員会、広報担当の今村です。
以後よろしくお願いします。

さて、今週からデモサイト委員会の活動報告を不定期ながら連載していきたいとおもっています。
今回はデモサイト委員会の紹介を兼ねてQ&A形式で記事を進めていきたいと思います。
では早速、

Q1.デモサイト委員会とは?

A1:デモサイトを作成しOpenPNE3をさらに世に広めPRしていく活動をしています。

Q2.委員会のメンバーって誰ですか?

A2:OpenPNE開発チームが主体となっております。
↓こんなメンバーでやってます↓

OpenPNE3デモサイト委員会の面々

Q3.どんなこと話し合っているんですか?

A3:「デモサイトをどんなふうにカスタマイズしていこうか」や「こんなプラグインを作ろう」など、OpenPNE3がより魅力的になるような工夫を考えています。

Q4.面白そうな今後期待しているプラグインはありますか?

A4:開発チームのurabe氏が開発中のOpenPNE3でGPSを利用できるようにするopGpsPluginや同じくnagawasa氏が開発したOpenPNE3で4コマ漫画が描けるopCCCCPlugin等が面白そうです。kawahara氏が開発したOpenSocialプラグインにも期待しています。

Q5.今後のデモサイト委員会の目標は何ですか?

A5:まずはPV数の増加ですw 最低でも1日のPVが50くらいはいくようにしたいと思っています。
現状、デモサイトの入り口が分かりにくかったりと導線がスムーズではないので、まずはその辺からコツコツと改善していこうと思っています。
ちなみにデモサイトのURLはコチラ

皆さん、どんどんOpenPNE3を体験してくださいね!

マイコミジャーナル他でOpenPNE関連記事が掲載されました!

09 / 30 水曜日 2009

マイコミジャーナル他でOpenPNE関連記事が掲載されました!

手嶋屋、加藤登紀子のマキシシングル「1968」に参加権が付いたSNS構築
マイコミジャーナル(2009年9月29日)
http://journal.mycom.co.jp/news/2009/09/29/012/?rt=na

加藤登紀子、SNS参加権付き新曲「1968」を発表
時事通信(2009年9月29日)
http://www.jiji.com/jc/movie?p=top021-movie01&s=030

その他の掲載記事
/media/

今週のOpenPNE#21 (2009/09/13 ~ 2009/09/19)

09 / 20 日曜日 2009

OpenPNE 開発チームのきわです。

先週はお休みしてしまい申し訳ありません><。
先週~今週は、プラグインのリリースやOpenPNE2のリリース延期などがありました。

開発状況

OpenPNE3開発状況

先週から今週はプラグインが2つリリースされました!
opOpenSocialPlugin0.9.0 とopAshiatoPlugin0.9.0 がリリースされ、OpenPNE3.1でも動かせるようになりました。川原くん、秋山さん、お疲れ様です!
この2つのプラグインはOpenPNE3のデモSNSでも近々利用できるようになる予定です。

opOpenSocialPlugin 0.9.0リリースのお知らせ

/archives/3480/

opAshiatoPlugin 0.9.0 リリースのお知らせ

/archives/3501/

OpenPNE3 のドキュメント執筆も進んでいます。今週はOpenPNE Web APIについてのドキュメントの日本語版が完成しました。
ブログでもOpenPNE3の機能紹介の投稿があるので、是非ご覧下さい!先週から今週でOpenID・OAuthの紹介がおこなわれています。

OpenPNE Web API 仕様書

http://trac.openpne.jp/browser/OpenPNE3/doc/branches/develop/OpenPNEWebAPI/ja

OpenPNE 3.1 機能紹介 #2 - OpenID

/archives/3445/

OpenPNE 3.1 機能紹介 #3 - OAuth

/archives/3527/

OpenPNE2→OpenPNE3 へのコンバータは現在テスト段階。今週は公式SNSのデータを使ったテストが行われました。コンバートに非常に時間がかかることや、メモリの消費が凄いことから、まだリリースはむずかしいようです。
開発者の深町さんが進捗状況をブログに投稿しているのでご覧下さい。

3系へのDBコンバータ開発進捗と課題

/archives/3557/

3系へのDBコンバータ 開発用ブランチ

http://trac.openpne.jp/browser/OpenPNE3/branches/fukamachi/db-convert-from-2.x/

先週からopDiaryPlugin も動きをみせています。文字装飾対応や日記検索機能の実装などが行われているようです。

opDiaryPlugin - GitHub

http://github.com/balibali/opDiaryPlugin

twitterは相変わらず開発者が、開発中の呟きを頻繁にポストしています。
皆さんも気兼ねなく#op3devで投稿してみてください!疑問・質問でもOKです。

twitter OpenPNE3開発に関する呟き

http://search.twitter.com/search?q=%23op3dev

発言された内容は連絡なしに「今週のOpenPNE」に転載させていただく可能性があります。「今週のOpenPNE」に掲載したくない発言は #x-wpne のタグを追加してください。

OpenPNE2開発状況

OpenPNE2.14.2 / 2.12.5 はおおむね修正は完了しました!
ですが、動作テストが遅れているためリリースは予定より20日ほど遅れることになりました。。。
2009/10/8にリリースされる予定です。

OpenPNE2.14.2 開発用レポート

http://trac.openpne.jp/report/154

OpenPNE2.12.15 開発用レポート

http://trac.openpne.jp/report/155

OpenPNE2.14.2 と OpenPNE2.12.15のリリース延期のお知らせ

/archives/3544/

ハイライト

twitter 発言ハイライト(#op3dev)

DBコンバータ

  • nitro_idiot: メモリの主な増加要因はisExist() (とisSelectOne()) にあるみたいだ。この2つをインラインで書き換えるといいかもしれない
  • nitro_idiot: 出社中にコンバート終了。公式コミュニティのDBコンバートで12時間くらいかかった。たぶん半分以上があしあとの変換だけど。
  • nitro_idiot: アイコンがちゃんと表示されないなぁ。Binデータがちゃんと入ってないのかな
  • nitro_idiot: DBコンバータ不具合。member_profileでcheckbox式のもののNestedSetを考慮していない
  • nitro_idiot: バグを直すとループが増えてメモリ不足になった Xp どうしよう

opDiaryPlugin

  • balibali:連休中に opDiaryPlugin に付け足すべき機能募集
    • kiwpon:@balibali メール投稿・投稿時の確認画面・認証無しで見られる日記
    • kiiro:@balibali 携帯のメール投稿(添付画像対応)と確認画面と認証なしで日記見れること

その他

  • urab: 画像書き込み管理機能をこっそり追加した

  • balibali: mobile_frontend のテストで UA チェックに引っかかってるのは opMobileUserAgent を Singleton で使い回しているから。中の Instance リセットしたら動いたけど、メソッド追加していいかなあ

  • balibali: opMobileUserAgent::resetInstance() GitHubにコミットした http://github.com/balibali/OpenPNE/commit/6481980a626db171bf29c84958826d95aef4fb41 Hook 設定するの忘れてた

  • ooharabucyou: opProfileExport::get~($key) でのキー名は自動で取得できたほうがいい気がする

  • co3k: ドキュメントとかその辺をやるウィーク(僕の中で)なのですが、あまりに開発しないのは腕がなまってしまうので、ちょこちょこと SNS 名称変更機能を作ってます。 国際化まわりが厄介でしたが設定の仕組みができあがったので、あとはそれに各文章を対応させるだけ!

  • co3k: OpenPNE3 の trunk が読みに行く Doctrine 1.2 を、現在の最新のものを参照するようにしました。なにか問題などあればレポートよろしくお願いします。

  • nitro_idiot:MemberProfileTable::getProfileListByMemberId()で、return文のあとに文が続いてる。内容見ると、どうやらPropel時の残骸らしい。これって消していいよね? 消しますよ?

  • hiroyaxxx:PNE3はPHP5.3非対応なのに今更気が付いた、PHP5.2に下げたら画像アップロードが正常になった、軽くショボン。将来的にはどうなんだろう?

コミュニティでの話題ハイライト

  • [公式SNSトピック] 携帯から画像がアップロードできない
  • [公式SNSトピック] カスタマイズ機能のSQLでエラーがでる
  • [公式SNS日記] 公式SNSをIE8で閲覧するとレイアウトが崩れる
  • [公式SNSトピック] 2.14.1へのアップグレードに失敗する

今週追加された機能ハイライト

OpenPNE3 - core

今週追加された機能はありません。

OpenPNE3 - plugins

今週追加された機能はありません

今週修正したバグハイライト

今週修正されたバグはありません。

OpenPNE2

  • #4178:FireFox3.5で誕生日バナーの右側に余白ができる(imamura623)

今週報告されたバグハイライト

OpenPNE3

  • #4320:3.1.2 画像アップロードができない(OpenPNE公式SNS)
  • #4321:3.1.2でproxy経由でのプラグイン所得ができない(OpenPNE公式SNS)

OpenPNE2

  • #4322:イベント参加者一覧のニックネームが違う(boze)

3系へのDBコンバータ開発進捗と課題

09 / 18 金曜日 2009

OpenPNE開発チームの深町です。

 いよいよ公式SNSのOpenPNE3化(9月下旬予定)も迫ってきました。

 その3化に必要な2系から3系へのDBコンバータの開発状況をご報告します。

今どんな感じ?

 開発自体は9月8日に(バグの実装を含めて)一段落し、その後はずっと動作テストと修正を続けてきました。

DBコンバータのログ

 上の画像は実際に僕の環境でデータをコンバートした際のログです。一通りのコンバートを終えるまでに大体12時間弱かかりました。データ量が膨大という理由もありますが、これはまだ改善の必要があるようです。

なんでまだOpenPNE3化しないの?

「もう動くんならすぐOpenPNE3化しちゃいなよ」
「いや、まだそういうわけには…」

 最近では他のメンバからもせっつかれてるので、現状の課題も明示しておきます。

不具合

 コンバート後のデータの表示で以下の不具合がありました。

  • メンバのプロフィールが表示されない
  • メンバとコミュニティのアイコンが表示されない

未実装

 また、事情があって変換自体が後回しされてる機能もあります。

  • SNSの設定(SNS名など)の移行
  • メッセージ機能 (opMessagePluginのDoctrine化が遅れているため)

 3化はこれらの修正(実装)とテスト後に行われると思います。

うちのSNSもOpenPNE3化したいんだけど

 悪いことは言わないのでまだやめたほうがいいです※補足。

 その理由は以下。

  • メモリをよく食べる (公式SNSではメモリ1GB食べた)
  • 時間がかかる (公式SNSでは12時間弱)
  • バグが満載かもしれない
  • まだ対応していない機能がある

 特にパフォーマンス面は今までも改善を進めてきましたが、まだまだ根本的な改善にはいたっていません(くそーPHPめーDoctrineめー)。

 公式SNSのOpenPNE3化後、一般SNS向けに修正とテストを行ったのちにtrunkにマージしてリリースされると思うので、それまでお待ちください。ただし予定は未定です。

※補足(19:18)
はてブで「これはひどい」タグがついているので補足します。

これはもちろん既存のOpenPNE2のSNSを、当DBコンバータを使ってOpenPNE3化することに関してですよ。

OpenPNE2.14.2 と OpenPNE2.12.15のリリース延期のお知らせ

09 / 16 水曜日 2009

OpenPNE開発チームの今村です。

OpenPNE2.14.2とOpenPNE2.12.15のリリースを2009/09/17(木)に予定していましたが延期します。
延期後のリリース日は2009/10/08(木)を予定しています。

ほぼ実装は終わっておりあとは動作テストするだけなのですが、リソースが足りておりません・・・。
リリースを楽しみにしている方も多いかと思いますが、もうしばらくお待ちください。

OpenPNE 3.1 機能紹介 #3 - OAuth

09 / 12 土曜日 2009

開発チームの海老原です。

3.1 機能紹介シリーズ第三弾です。今回は OpenPNE 3.1.2 から新しく対応した OAuth について紹介します。

OAuth とは

SNS 内データのように保護されたリソースへの API を使ってアクセスする場合に有用なアクセス制御の仕組みです。

OAuth 登場以前は API を使用する外部アプリケーションなどに利用者の ID やパスワードを預けなければなりませんでした。 ID とパスワードを預けるということは、そのサイトにおける全権限を与えてしまうことに等しいというだけでなく、その ID とパスワードを他サービスと共用していた場合、そのサービスについても不正利用される危険が常につきまとうということになります。

OAuth ではデータにアクセスするために ID やパスワードとまったく紐付かないトークンを使用します。このトークンは、認証済みのユーザから使用を許可されたもので、あらかじめ許可されている API へのアクセスしかおこなえません。また、このトークンが不正利用された場合はいつでも破棄することができます。

SNS が OAuth に対応することで、安心して外部のアプリケーションを利用することができるようになります。

OAuth 対応アプリケーションを作る

OAuth に対応したアプリケーションを作るには、まず、 SNS への申請が必要です。

アプリケーションはメンバー画面と管理画面の両方からおこなうことができます。

ここではメンバー画面の例を示します。

まず、 SNS の設定変更画面 (/member/config) にアクセスします。メニューに「外部サービスとの接続設定」という項目があるので、それをクリックします。

pictureefbc882009-09-11-154734efbc89

「アプリケーションの追加」リンクをクリックします。

pictureefbc882009-09-11-154926efbc89

アプリケーション情報の登録を促されるので、必要な情報を入力します。使用する API は、アプリケーションが使用する予定の API をすべて選択します。ここで選択されなかった API は使用することができません。

pictureefbc882009-09-11-155006efbc89

アプリケーションの情報が表示されます。これで、このアプリケーションがこの SNS で使用できるようになりました。

pictureefbc882009-09-11-155129efbc89

この画面で表示される Consumer key と Consumer secret はアプリケーションを特定するために使用される情報です。これは絶対に公開しないでください。

実際に WebAPI にアクセスしてみる

では、実際にアプリケーションから OAuth を使って WebAPI にアクセスします。

OAuth のフロー

OAuth は以下のようなフローで認可処理をおこないます。

oauth_flow_ja

コーディング

それでは実際にコーディングに入ります。

OAuth のフローは単純なため、署名部分を除いては自分で書くこともできますが、 OpenPNE でより楽に OAuth を扱うためのライブラリを作成しました。(このライブラリは Apache2 Lisence として提供します。ご自由にお使いください)

OpenPNE3 用 OAuth ライブラリ (Gist) ※このコードは気が向き次第改良を加えていきます

また、このライブラリは PHP で OAuth を扱うための以下のライブラリに依存します。こちらも忘れずに入手してください。
http://oauth.googlecode.com/svn/code/php/

以下に、このライブラリを使って OpenPNE の OAuth を利用する手順を示します。

コンシューマの設定をする

ライブラリを使用するために、コンシューマに関する簡単な情報を設定する必要があります。

OpenPNEOAuth::getInstance() メソッドに、 SNS の URL とコンシューマキーとコンシューマシークレットを引数として指定します。

OpenPNEOAuth::getInstance($url, $consumerKey, $consumerSecret)

これでコンシューマ情報の登録は完了です。

以降は、OpenPNEOAuth::getInstance() を引数なしでコールし、 OpenPNEOAuth のインスタンス経由で各種メソッドを使用できるようになります。

リクエストトークンを取得する

リクエストトークンを取得するには、 OpenPNEOAuth::getRequestToken() メソッドをコールバック URL 付きでコールします。この URL は、認可後にユーザが戻ってくる外部アプリケーションの URL です。 URL を持たないデスクトップアプリケーションなどの場合は、文字列 “oob” を指定してください。

OpenPNEOAuth::getInstance()->getRequestToken('http://example.com/')

このメソッドは、リクエストトークン取得用の URL にアクセスした際のレスポンス本文をパースし、連想配列にしたものを返します。 oauth_token というキーでリクエストトークンの値が、 oauth_token_secret というキーでトークンに紐付いたシークレットの値が格納されています。

認可用 URL を取得し、リダイレクトさせる

メンバーが認可をおこなうページへの URL を取得するには、 OpenPNEOAuth::getAuthorizeUrl() メソッドをコールします。このメソッドは、 OpenPNEOAuth::getRequestToken() の返り値のように、 oauth_token というキーの要素を持つ連想配列を引数に取ります。

$url = OpenPNEOAuth::getInstance()->getAuthorizeUrl($token)

OpenPNEOAuth::getRequestToken() の返り値は、認可用ページの URL を表す文字列です。この URL に対して、リダイレクトなどの方法によってメンバーを誘導します。

header('Location: '.$url);

認可されたリクエストトークンを使ってアクセストークンを取得する

メンバーが認可をおこなったあとは、リクエストトークンを取得する際に指定した URL に戻ってきます。この際、リクエストトークンが oauth_token というパラメータで、確認用コードが oauth_verifier というパラメータで渡されているので、これを元にアクセストークンを取得します。

アクセストークンを取得するには、 OpenPNEOAuth::getAccessToken() メソッドを、認可済みリクエストトークンと確認用コードを引数に指定してコールします。

$token = OpenPNEOAuth::getInstance()->getAccessToken($_GET['oauth_token'], $_GET['oauth_verifier'])

OpenPNEOAuth::getAccessToken() の返り値は、 OpenPNEOAuth::getRequestToken() と同様に、レスポンス本文をパースし連想配列にしたものです。oauth_token というキーでアクセストークンの値が、 oauth_token_secret というキーでトークンに紐付いたシークレットの値が格納されています。

OAuth に対応した API の URL に対して、アクセストークン付きでアクセスする

OpenPNE3 で利用できる OAuth に対応した API には、現時点で OpenPNE Web API があります。

たとえばこの API でメンバーの情報を取得する場合、 http://sns.example.com/api.php/feeds/member/1 に GET でリクエストします。

このような場合は OpenPNEOAuth::doOAuthGet() メソッドが利用できます。 OpenPNEOAuth::doOAuthGet() は、 リクエスト対象の URL、 OpenPNEOAuth::getAccessToken() で得られるアクセストークンが格納された連想配列を引数に指定します。

$token = OpenPNEOAuth::getInstance()->doOAuthGet('http://sns.example.com/api.php/feeds/member/1', $token)

POST, PUT, DELETE メソッドによるリクエストもサポートしています。

POST と PUT はそれぞれ OpenPNEOAuth::doOAuthPost(), OpenPNEOAuth::doOAuthPut() というメソッドで扱えます。これらのメソッドはリクエスト対象の URL、リクエスト本文の文字列(OpenPNE Web API の場合は XML 文書)、アクセストークンが格納された連想配列を引数に取ります。

DELETE の場合は OpenPNEOAuth::doOAuthDelete() というメソッドを使用します。このメソッドの引数は OpenPNEOAuth::doOAuthGet() と同様、 リクエスト対象の URL、 OpenPNEOAuth::getAccessToken() で得られるアクセストークンが格納された連想配列です。

実際のサンプルコード

手順通りにライブラリを使用して、できあがったサンプルコードを以下に示します。

このコードは OAuth を使用した外部アプリケーション開発に必要な手順を示すための最低限のサンプルでしかありません。このコードは XSS 攻撃や変数汚染攻撃などに対して脆弱です。絶対にこのまま使用しないでください。

詳細な情報を得るには

OAuth の仕様書である OAuth Core 1.0 Revision A をご覧ください。

また、 OpenPNE3 で OAuth を使うためのドキュメントを現在作成中です(日本語版、英語版)。現時点ではかなり荒削りですが、参考資料としてはお使いいただけると思います。

ページの先頭に戻る