<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>京の路</title>
<link>http://blog.matake.jp/</link>
<atom:link rel="self" href="http://blog.matake.jp/rss.xml" />
<description>僕はまだ、路の途中。</description>
<language>ja</language>
<pubDate>Mon, 28 Dec 2009 13:51:26 +0900</pubDate>
<lastBuildDate>Mon, 28 Dec 2009 13:51:26 +0900</lastBuildDate>
<copyright>Copyright 2005-2009, NOV</copyright>
<generator>http://www.movabletype.org/?v=4.23-ja</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 


<item>
<title>OAuth WRAP Profiles (翻訳、Javascript Profile も含む)</title>
<description>
<![CDATA[<p><img src="http://wiki.oauth.net/f/1261509784/wrap_logo_opaque.png" width="250px" class="border" /></p>

<p><a href="http://wiki.oauth.net/OAuth-WRAP">OAuth WRAP</a> という新しい OAuth の仕様が話題になってるので、ちょっとドキュメントを訳してみました。</p>

<p>全部翻訳するのは大変なので、利用シーンごとに分けて作られている "Profile" というのだけをそれぞれ訳しています。(WRAP は Web Resource Authorization Protocol の略らしい)</p>

<p>Facebook Connect を置き換えるものとしても注目されており、Javascript 単体のアプリケーションなんかも想定してあります。今回翻訳したドキュメントでは、まだ Javascript Profile は定義されていないのですが、<a href="http://groups.google.com/group/oauth-wrap-wg/browse_thread/thread/4840fab6935e6fbc">MLに仕様書のドラフトが添付されていた</a>ので、そちらも同時に訳しています。</p>

<p><a href="http://smart.fm">Smart.fm</a> でも Javascript アプリ上での認証はオープン化の key なので、特に Javascript Profile に注目しています。</p>]]>
<![CDATA[<h3>Autonomous Client Profiles</h3>

<p>認可サーバとクライアントの二者間で認可を行う。いわゆる 2-legged。Refresh Token は利用しない。</p>

<h4>Client Account and Password Profile (5.1)</h4>

<blockquote>
<p>This is the simplest Profile. The Client is provisioned with an account name and corresponding password by the Authorization Server. The Client presents the account name and password to the Access Token URL at the Authorization Server in exchange for an Access Token.</p>
</blockquote>

<p>もっとも単純なプロファイル。認可サーバが個別のクライアントアプリケーションごとにアカウント名とパスワードを振り分け、クライアントは Access Token 取得時にそのアカウント名とパスワードを認可サーバに提示する。</p>

<h4>Assertion Profile (5.2)</h4>

<blockquote>
<p>This profile enables a Client with a SAML or other assertion recognized by the Authorization Server. The Client presents the assertion to the Access Token URL at the Authorization Server in exchange for an Access Token. How the Client obtains the assertion is out of scope of OAuth WRAP.</p>
</blockquote>

<p>クライアントと認可サーバの間で SAML などのアサーションを確立し、クライアントは Access Token 取得時にそのアサーションを認可サーバに提示する。どのようにアサーションを確立するかは OAuth WRAP のスコープ外。</p>

<h3>User Delegation Profiles</h3>

<p>クライアントがユーザの権限で認可サーバにアクセスする。いわゆる 3-legged。Refresh Token を利用する。</p>

<h4>Username and Password Profile (5.3)</h4>

<blockquote>
<p>While the User may use a username and password to authenticate to the Authorization Server, it is undesirable for the Client to store the User's username and password. In this profile the User provides their username and password to an application (Client) they have installed on their device. The Client presents a Client Identifier, the username and password (credentials) to the Access Token URL at the Authorization Server in exchange for an Access Token and a Refresh Token.</p>
<p>When the Access Token expires, the Client presents the Refresh Token to the Refresh Token URL at the Authorization Server in exchange for a new Access Token.</p>
</blockquote>

<p>ユーザは認可サーバへの認証にユーザ名とパスワードを使うが、ユーザ名とパスワードをクライアント側に保存するのは好ましく無い。このプロフィールではユーザが自身のユーザ名とパスワードを自身のデバイスにインストールされたアプリケーションに入力することを想定している。クライアントは Access Token & Refresh Token 取得時に Client Identifier とユーザ名、パスワードを認可サーバに提示する。</p>

<p>Access Token の有効期限が過ぎた時には、クライアントは Refresh Token を認可サーバに提示して、新しい Access Token を取得する。</p>

<h4>Web App Profile (5.4)</h4>

<blockquote>
<p>It is undesirable for a User to provide their Authorization Server username and password to web applications. Additionally, the User may authenticate to the Authorization Server using other mechanisms then a username and password. In this profile, a web application (Client) has been provisioned with a Client Identifier and Client Secret and may have registered a Callback URL.</p>
<p>The Client initiates the protocol by redirecting the User to the User Authorization URL at the Authorization Server passing the Client Identifier and the Callback URL. The Authorization Server authenticates the User, confirms the User would like to authorize the Client to access the Protected Resource, and generates a Verification Code. The Authorization Server then redirects the User to the Callback URL at the Protected Resource passing along the Verification Code.</p>
<p>The Client then presents the Client Identifier, Client Secret, Callback URL and Verification code (credentials) to the Access Token URL at the Authorization Server for an Access Token and a Refresh Token.</p>
</blockquote>

<p>認可サーバのユーザ名とパスワードをWeb アプリケーションに提示するのは好ましく無い。またユーザはユーザ名とパスワード以外の方法で認可サーバへの認証を行う可能性もある。よってこのプロフィールではクライアントはあらかじめ Client Identifier と Client Secret を取得する。その時同時に Callback URL を登録することもある。</p>

<p>認可開始時に、クライアントはユーザを認可サーバにリダイレクトさせる。このとき Client Identifier と Callback URL をパラメータとして渡す。認可サーバはユーザの認証を行い、ユーザの同意を得て Verification Code を発行する。その後認可サーバはユーザを Callback URL にリダイレクトさせる。このとき Verification Code がパラメータとして付与される。</p>

<p>クライアントは Access Token & Refresh Token 取得時に Client Identifier、Client Secret、Callback URL、Verification code を認可サーバに提示する。</p>

<h4>Rich App Profile (5.5)</h4>

<blockquote>
<p>This profile is suitable when the Client is an application the User has installed on their device and a web browser is available, but it is undesirable for the User to provide their username and password to an application, or the user may not be using a username and password to authenticate to the Authorization Server.</p>
<p>The Client initiates the protocol by directing the User's browser to the Authorization URL at the Authorization Server passing the Client Identifier and potentially a Callback URL. The Authorization Server authenticates the User, confirms the User would like to authorize the Client to access the Protected Resource, and generates a Verification Code. The Verification Code may be communicated back to the Client in a number of ways</p>
<p>(A) the Authorization Server presents the Verification Code to the User, who is instructed to enter the Verification Code directly in the Client; the Client reads the Verification Code from the title of the web page presented by the Authorization Server</p>
<p>(B) the Authorization Server redirects the User to the Callback URL that presents Client specific language for the User to enter the Verification Code into the Client;</p>
<p>(C) the Client has registered a custom scheme and the Authorization Server redirects the browser to the custom scheme that causes the User's browser to load the Client application with the Verification Code as a parameter.</p>
<p>The Client then presents the Client Identifier, Callback URL (if provided) and Verification code (credentials) to the Access Token URL at the Authorization Server for an Access Token and a Refresh Token.</p>
</blockquote>

<p>このプロフィールでは、クライアントはユーザのデバイスにインストールされているアプリケーションであり、かつ Web ブラウザが利用可能な状況を想定している。もちろんユーザがユーザ名とパスワードをアプリケーションに渡すのは好ましく無い。またユーザはユーザ名＆パスワード以外の方法で認証を行っている可能性もある。</p>

<p>クライアントはまず Web ブラウザを用いてユーザを認可サーバにリダイレクトさせる。このとき Client Identifier と Callback URL  をパラメータとして渡す。(Callback URL は任意) 認可サーバはユーザの同意のもと Verification Code を発行する。Verification Code は以下のような方法でクライアントに渡される。</p>

<p>A) ユーザに Verification Code を提示して、ユーザがその Code をクライアントに入力する。もしくはクライアントが Web ページのタイトルから Verification Code を読み取る。</p>

<p>B) 認可サーバがユーザを Callback URL にリダイレクトさせる。ユーザはリダイレクト先 (おそらくクライアント側で用意した Web ページ) で Verification Code の入力を求められる。</p>

<p>C) クライアントは認可サーバに特別なスキーマを登録し、認可サーバはブラウザをそのスキーマにリダイレクトさせる。このスキーマへのリダイレクトにより、クライアントアプリケーションが起動され、パラメータとして Verification Code が渡される。</p>

<p>クライアントは Access Token & Refresh Token 取得時に Client Identifier、(もしあれば) Callback URL、Verification code を認可サーバに提示する。</p>

<h4>Client App Profile</h4>

<blockquote>
<p>This profile is a suitable when the Client is an application that lives purely on the user's client - for example, on a desktop, or in JavaScript.</p>
<p>Because the entire source code for the Client is downloaded to the User's desktop or browser, it is not possible to protect the Client Secret. This profile allows for authorization while taking those security considerations into account. Because there is no Client Secret to ensure authenticity, both the Client and the Authorization Server should take some extra precautions when using this profile. Specifically, it should only be used when the risk of exposing the Access Token in a JavaScript environment is acceptable. To help mitigate this risk, it is strongly RECOMENDED that the Access Token have an expiration time on the order of a few hours.</p>
<p>If the Client wishes to obtain an Access Token with a much longer expiration time, they should make use of the "Client Refreshes Access Token" method within the Web App Profile. </p>
</blockquote>

<p>このプロフィールではクライアントがデスクトップアプリや Javascript アプリなど、完全にクライアントサイドにある状況を想定している。</p>

<p>ソースコードは完全にクライアント上にダウンロードされるので、Client Secret を保護する方法は無い。そのためこのプロフィールではこれらのセキュリティ上の問題が考慮されている。このプロフィールを利用する際は、Client Secret を利用しない代わりに、クライアントと認可サーバ両サイドでなんらかの対策を行うおくべきである。特に Javascript アプリで利用する場合は、Access Token の漏洩が許容される場合にのみこのプロフィールが利用可能である。Access Token 漏洩リスクを軽減するため、Access Token は数時間程度で無効化することが望ましい。</p>

<p>クライアントが有効期限より長い間アクセス権を必要とする場合は、Web App Profile で定義された "Client Refreshes Access Token" のフローを利用するべきである。</p>]]>
</description>
<comments>http://blog.matake.jp/archives/oauth_wrap_profiles_javascript_profile</comments>
<link>http://blog.matake.jp/archives/oauth_wrap_profiles_javascript_profile</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/oauth_wrap_profiles_javascript_profile</guid>
<category>Technology</category>
<pubDate>Mon, 28 Dec 2009 13:51:26 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>たまプラーザに引っ越しました。</title>
<description>
<![CDATA[<p>クリスマス休暇を利用して、たまプラーザに引っ越しました。</p>

<p><a href="http://farm3.static.flickr.com/2804/4217261003_37ab25bb20_o.jpg" rel="facebox"><img class="narrow" src="http://farm3.static.flickr.com/2804/4217261003_be6ce1c3e8.jpg" /></a></p>

<p>子供達の保育園を変えたく無かったので、前の家からは車で15分ほどの近場です。</p>

<p>たまプラーザ駅のまわりを囲んで、「たまプラーザテラス」というのがあるのですが、ここがなかなかおしゃれでお気に入りです。</p>

<p>クリスマスにはサンタクロースも来てました。</p>

<p><a href="http://farm5.static.flickr.com/4045/4212651126_97cd674fb5_o.jpg" rel="facebox"><img src="http://farm5.static.flickr.com/4045/4212651126_de9fbf25b4.jpg" /></a></p>

<p>「サンタさんはみんなが寝てから来るんだよ」と教え込まれていた息子は、起きてる時に来ていたサンタさんに驚愕していました（笑</p>

<p>しょうがなく、世の中には「プレゼントをくれるサンタさん」と「写真撮ってくれるだけのサンタさん」がいることにして、その場は解決しました。</p>]]>
<![CDATA[<p>ps.<br />
たまプラーザテラスから見える駅の入り口が、すげーかっちょいぃ！</p>

<p><a href="http://farm4.static.flickr.com/3487/4080247189_e83cacb1ca_o.jpg" rel="facebox"><img src="http://farm4.static.flickr.com/3487/4080247189_0db871be03.jpg" /></a></p>]]>
</description>
<comments>http://blog.matake.jp/archives/post_570</comments>
<link>http://blog.matake.jp/archives/post_570</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/post_570</guid>
<category>Private</category>
<pubDate>Mon, 28 Dec 2009 12:06:09 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>MacOSX での Android SDK セットアップと Android の /etc/hosts の編集方法</title>
<description>
<![CDATA[<p>昨日からちょっと Smart.fm Android アプリのデバッグのお仕事が入ったので、Android SDK をセットアップして Emulator にアプリをインストールしました。</p>

<p>インストール自体は簡単だけど、実際に Emulator を立ち上げるまでに少しハマり、Android で /etc/hosts をいじったりするところまではかなりハマったので、忘れないうちにメモメモ。</p>

<h3 class="clear">Download & Install Android SDK</h3>

<p><a href="http://developer.android.com/sdk/index.html">Android SDK | Android Developers</a> から、MacOSX 用の SDK をダウンロード。ダウンロードされたディレクトリごと適当な場所に配置して、SDK_ROOT/tools に PATH を通しておく。</p>

<h3>Install Android SDK Components</h3>

<p>次に <a href="http://developer.android.com/sdk/adding-components.html">Adding SDK Components | Android Developers</a> にある通り、SDK Componets とかいうのをインストールする。</p>

<p>まずは以下のコマンドで Android SDK and AVD Manager を立ち上げる。（たぶん AVD は Android Virtual Device の略）</p>

<pre>android</pre>

<p>どうも僕の環境では HTTPS 経由だと失敗するので、Settings から HTTP を使うように設定。</p>

<p><a href="http://farm3.static.flickr.com/2491/4115924983_a3c5f0be9a_o.png" rel="facebox" title="Android SDK - Settings"><img src="http://farm3.static.flickr.com/2491/4115924983_bc09a80206.jpg" alt="Android SDK - Settings" /></a></p>

<p>ちょっと時間がかかるけど、Available Packages からとりあえず全パッケージをインストールしておく。僕の環境でインストールされたパッケージ一覧はこちら。</p>]]>
<![CDATA[<p><a href="http://farm3.static.flickr.com/2559/4115915619_f942a0f407_o.png" rel="facebox" title="Android SDK - Installed Packages"><img src="http://farm3.static.flickr.com/2559/4115915619_d4be6acb59.jpg" alt="Android SDK - Installed Packages"  /></a></p>

<p>これで Emulator をセットアップする為の Target がセットアップされるみたい。</p>

<h3>Setup Android Virtual Devices</h3>

<p>Emulator 用に Android Virtual Device (AVD) を作成する。Emulator 起動時には毎回どの AVD を使うか指定する必要がある。</p>

<p>既に起動している Android SDK and AVD Manager の Virtual Devices -> New から、適宜自分にあったバージョンの Android OS を Target にして AVD を作成できる。Audio Recoding などの機種別の付加機能は、Hardware として追加できる。</p>

<h3>Launch Android Emulator</h3>

<p>自分で作った TARGET_NAME を指定して emulator コマンドで以下のように Android Emulator を起動する。Target に指定した Android OS のバージョンによって、見た目は違う。見た目でしか判断してないけど、Google Developer Day に配布されてた HTC のやつは Android 1.6 みたい。</p>

<h3>Install Applications to Emulator</h3>

<p>Android アプリ（.apk ファイル）を指定して、以下のようにアプリケーションをインストールできる。</p>

<pre>adb install YOUR_APP.apk</pre>

<p>Eclipse から直接 build して Emulator で起動する場合は、<a href="http://developer.android.com/sdk/eclipse-adt.html">Installing and Updating ADT (for Eclipse) | Android Developers</a> を参考に。一応 Eclipse からも使えるようにセットアップしたけど、個人的に Eclipse 派ではないので、ここでは割愛。</p>

<h3>Edit /etc/hosts for Android Emulator</h3>

<p>Android Emulator は、Emulator が走ってるマシンの /etc/hosts を無視する（/etc/resolve.conf しか見ない）ので、Android Emulator 自体が持ってる /etc/hosts ファイルを編集する必要がある。Android に最初から入ってる Dev Tools にも Terminal はあるけど、cat くらいしか使えないので、adb コマンドでホストマシンで編集した /etc/hosts ファイルを push してやる必要がある。</p>

<p>まずは remount。<br />
これをしないと "failed to copy '~/Desktop/hosts' to '/system/etc/hosts': Read-only file system" というエラーがでる。。</p>

<pre>adb remount</pre>

<p>Emulator の既存の /etc/hosts を取ってくる。</p>

<pre>adb pull /system/etc/hosts ~/Desktop/</pre>

<p>適当に編集したら push。</p>

<pre>adb push ~/Desktop/hosts /system/etc</pre>

<p>push されたファイルを確認するには以下のように adb shell で Emulator 内の shell に入り、cat する。（less とか vi とかは入ってない）</p>

<pre>adb shell
# cat /system/etc/hosts</pre>]]>
</description>
<comments>http://blog.matake.jp/archives/android_sdk_setup_and_editing_etc_hosts_macosx</comments>
<link>http://blog.matake.jp/archives/android_sdk_setup_and_editing_etc_hosts_macosx</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/android_sdk_setup_and_editing_etc_hosts_macosx</guid>
<category>Programming</category>
<pubDate>Thu, 19 Nov 2009 11:20:58 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>3歳で Apple マスター</title>
<description>
<![CDATA[<p>家の息子、3歳にして iPhone と MacBook の使い方を覚えてしまったようです。</p>

<p>「アンパンマン体操おどって」というと、iPhone で YouTube を立ち上げて、履歴からアンパンマン体操を選んで曲に合わせて踊ってくれます。2歳の娘と一緒に。</p>

<p>こちかめ、ゴーオンジャー、アンパンマン、そして何故か大塚愛がお気に入りで、「関連動画」から次々に気に入ったのを再生していくので、YouTube の履歴は常にそれらでいっぱいです。</p>

<p>たまに本人 or 妹が履歴を消してしまうらしく、そういう時には「こちかめ探して〜」とか言ってくるのですが。</p>

<p>また「写真撮らせて」とかいうと、iPhoneを持ってきて、うまいことカメラ使って逆に写真撮ってくれます。いつもピント合ってないけど。</p>

<p>僕や嫁がソファーでMacBook触ってると、Apple Remote持ってきて、見事に邪魔してくれます。iPhotoの写真やiTunesの曲も、Apple Remoteでちゃんと選んでます。「邪魔しないで」というと、「じゃあおふとんの部屋いき〜」と言われる始末。。。</p>

<p>DVDとか借りてくると、MacBookをTVにつないで、DVD入れて勝手に再生してるし。</p>

<p>末恐ろしいヤツですが、ちゃんと電源切れたら充電器持ってきて充電してたり、寝る前は iPhone を充電してくれたりするあたり、なかなか役に立ってます（笑</p>

<p>さて、どのタイミングで息子専用の Mac を買ってやろうかなぁ〜？</p>]]>

</description>
<comments>http://blog.matake.jp/archives/3_years_old_apple_master</comments>
<link>http://blog.matake.jp/archives/3_years_old_apple_master</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/3_years_old_apple_master</guid>
<category>Apple</category>
<pubDate>Sun, 11 Oct 2009 03:36:05 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>idcon #6 雑感 - OpenID / OAuth / OpenSocial がこう使えたらいいのに</title>
<description>
<![CDATA[<p><u><strong>Contact リストを Email じゃなくて OpenID で取れればいいのに</strong></u></p>

<p>Google / Yahoo! Inc. の Contact API、正直友達の Email アドレスとかもらっても、スパムまがいの招待状送るくらいでどうせみんな登録しないんじゃない？本当は Facebook Connect みたいに「友達をインポートする」とかの方がやりたいのに。</p>

<p>G も Y! も OP になっていて、Smart.fm 内には各社数万単位でその OpenID を使っているユーザがいるので、Friend リストを OpenID で受け取れれば、Facebook Connect や Twitter なんかより遥かに高い確率で友達が見つかる、はず。</p>

<p>そして Email じゃなければ、Y! Japan さんも対応しやすい、かも？</p>

<p><br />
<u><strong>OpenSocial Container の User ID が OpenID だったらいいのに</strong></u></p>

<p>これも一つ目とほぼ同じ。mixi ID なんて送ってきて、僕らにどうしろと言うのさ！(まぁほとんどの mixi OpenID には mixi ID 含まれてるけど)</p>

<p>ってことで、OpenSocial Container も、OP やってるなら ID を OpenID にしちゃえばいいよね。</p>

<p>mixi OpenID で OAuth Hybrid 対応して、発行された Access Token で OpenSocial の Activity API とか叩けるようになれば、国内では Facebook Connect に負けるわけ無い。</p>

<p>って、mixi と MySpace 以外にどこがあるのか分からんけど。</p>

<p><br />
<u><strong>OP / SP が iPhone 対応してくれればいいのに</strong></u></p>

<p>OP が iPhone 対応してないから、自分とこのサイトが iPhone 対応しても、結局ログインはしにくいまま。どうせ2-3ページ対応すればいいだけだし、iPhone 対応してくれればいいのになぁ〜。</p>

<p><br />
と、idcon でちょうどタイムリーな話題もあったので、いろいろ言ってみた。</p>]]>

</description>
<comments>http://blog.matake.jp/archives/idcon_6_openid_oauth_opensocial</comments>
<link>http://blog.matake.jp/archives/idcon_6_openid_oauth_opensocial</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/idcon_6_openid_oauth_opensocial</guid>
<category>Monologue</category>
<pubDate>Sat, 10 Oct 2009 02:24:03 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>英単語たたきトップゲット！</title>
<description>
<![CDATA[<p>ようやく @S_Project を倒した。記念のスクリーンショット ;-)</p>

<p><a href="http://farm3.static.flickr.com/2503/3954045030_3033a2a32d_o.png" rel="facebox"><img src="http://farm3.static.flickr.com/2503/3954045030_bd1003eb76.jpg" class="narrow border" /></a></p>

<p>しかし、僕が2日で最高レベルのリストをクリアできるのだから、レベル的にはちょっと簡単すぎるのかも。</p>

<p>やっぱもうちょっと専門的なのを出してかないと、ダメかな。</p>

<p>僕には絶対パーフェクト出せないだろうけどw</p>]]>

</description>
<comments>http://blog.matake.jp/archives/post_568</comments>
<link>http://blog.matake.jp/archives/post_568</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/post_568</guid>
<category>smart.fm</category>
<pubDate>Sat, 26 Sep 2009 04:01:32 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>英単語たたき - Smart.fmがmixiアプリをリリース！</title>
<description>
<![CDATA[<p><a href="http://mixi.jp/view_appli.pl?id=8545"><img src="http://farm4.static.flickr.com/3493/3950130947_5a0b39e633.jpg" class="border narrow" /></a></p>

<p>mixiアプリ公開から約1ヶ月、本日ようやくSmart.fmの公式mixiアプリ「<a href="http://mixi.jp/view_appli.pl?id=8545">英単語たたき</a>」をリリースしました。</p>

<p><a href="http://mixi.jp/view_appli.pl?id=8545">英単語たたき</a>は、もぐらたたき形式で出題される日本語に合った英単語をハンマーで叩いて行くアプリです。</p>

<p>出題されるリストは初級〜上級まで全18リストで、それぞれのリストに設定された最低スコアを超えると、より高レベルのリストをプレイできるようになります。僕の英語力だと上級でパーフェクトを出すのは至難の業ですが、20回くらい同じリストをプレイして、さっきようやくすべてのリストをアンロックできました！現在マイミクランキングトップです、イェイ！！</p>]]>
<![CDATA[<p>ちなみに、Smart.fm APIを利用したアプリとしては、3rd party developerから既に<a href="http://mixi.jp/view_appli.pl?id=8034">★英単熟語りすにんくん</a>がリリースされており、わずか1週間でSmart.fm APIへのアクセス数ではTOPになっています。</p>]]>
</description>
<comments>http://blog.matake.jp/archives/eitangotataki_smartfm_mixi_appli</comments>
<link>http://blog.matake.jp/archives/eitangotataki_smartfm_mixi_appli</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/eitangotataki_smartfm_mixi_appli</guid>
<category>smart.fm</category>
<pubDate>Fri, 25 Sep 2009 00:07:09 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>はじめて常陸太田の実家？へ</title>
<description>
<![CDATA[<p>去年の冬から親父が隠居して大阪から茨城に移住したので、先週末から昨日までその家を見に行ってきました。ちょっと遅いお盆休み。</p>

<p>両親の隠居先は、常陸太田という水戸よりちょっと北よりの街で、なんとものどかな場所でした。関東って本当に平野なのだなと思い知らされる程のだだっ広さ。</p>

<p>夜には天の川まで見えるし、まさしく「田舎」。</p>

<p>家は築100年以上の古民家で、さすがに床はガタが来てて張り替えたようですが、囲炉裏も土間もあります。</p>

<p><a href="http://farm3.static.flickr.com/2538/3858428300_e05ae6373d_b.jpg" rel="facebox"><img src="http://farm3.static.flickr.com/2538/3858428300_e05ae6373d.jpg" class="border" /></a></p>

<p>しかし、田んぼ４面に畑２つ付いた家が年間25万ってすごいよね。両親は畑１つで手一杯のようですが。</p>]]>

</description>
<comments>http://blog.matake.jp/archives/hitachi-ota</comments>
<link>http://blog.matake.jp/archives/hitachi-ota</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/hitachi-ota</guid>
<category>Private</category>
<pubDate>Wed, 26 Aug 2009 14:14:11 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>Hoptoad - Rails のエラー通知プラグインの決定版！</title>
<description>
<![CDATA[<p><a href="http://www.hoptoadapp.com/"><img src="http://farm3.static.flickr.com/2631/3836122319_4e4498de57.jpg" class="narrow border" /></a></p>

<p>Rails アプリのエラー通知プラグインでは <a href="http://github.com/rails/exception_notification">ExceptionNotification</a> などがメジャーですが、それよりはるかに賢いプラグインを見つけたので紹介します。その名も「<a href="http://www.hoptoadapp.com/">Hoptoad</a>（ヒキガエル ）」。</p>

<p>正確には単なるプラグインではなく、エラー通知用プラグイン＋エラー管理Webアプリの組み合わせが「<a href="http://www.hoptoadapp.com/">Hoptoad</a>」です。</p>

<p>使い方は至って簡単。</p>]]>
<![CDATA[<dl>
<dt>Hoptoad サイトに登録</dt>
<dd>
<p>利用には API Key が必要なので、<a href="https://hoptoadapp.com/account/new">Signup Hoptpad</a> から自分にあったプランを選んで、ユーザ登録をします。僕は個人プロジェクトの <a href="http://twitbackr.com">twitbackr</a> で利用しているので、Egg (free) で十分。</p>
</dd>
<dt>プラグインインストール</dd>
<dd>
<p>プラグインは <a href="http://github.com/thoughtbot/hoptoad_notifier">github</a> にあります。</p>
<pre>script/plugin install git://github.com/thoughtbot/hoptoad_notifier.git</pre>
</dd>
<dt>API Key の設定</dt>
<dd>
RAILS_ROOT/config/initializers/hoptoad.rb を作成し、以下のように API Key を設定します。
<pre>
HoptoadNotifier.configure do |config|
  config.api_key = 'your_api_key_here'
end
</pre>
</dd>
<dt>HoptoadNotifier::Catcher のインクルード</dt>
<dd>
<p>ApplicationController あたりで</p>
<pre>
class ApplicationController < ActionController::Base
  include HoptoadNotifier::Catcher
  :
end
</pre>
</dd>
<dt>動作確認</dt>
<dd>
<pre>rake hoptoad:test</pre>
</dd>
</dl>

<p>あとは、エラーが発生したら Hoptoad サイトにエラー情報が蓄積されます。有料プランでは、backtrace の各行が github の特定のコミットにリンクされていたり、Lighthouse との連携も行えるようです。</p>

<p>無料プランでも、Hoptoad サイト内で backtrace の確認や Unresolved / Resolved の管理などは行えるので、ExceptionNotification でメール受け取るだけより断然イィ！</p>

<p><a href="http://farm3.static.flickr.com/2572/3836126203_4f080901c7_o.jpg" rel="facebox"><img src="http://farm3.static.flickr.com/2572/3836126203_379b44e13a.jpg" class="float_left  narrow" /></a></p>

<p><a href="http://farm3.static.flickr.com/2485/3836122399_d3d0c5431e_o.jpg" rel="facebox"><img src="http://farm3.static.flickr.com/2485/3836122399_ffa8b34ee6.jpg" class="float_left  narrow"  /></a></p>

<p><a href="http://farm3.static.flickr.com/2642/3836128327_651b3096ae_o.jpg" rel="facebox"><img src="http://farm3.static.flickr.com/2642/3836128327_7b7dd3f8a1.jpg" class="float_left  narrow"  /></a></p>

<p><a href="http://farm3.static.flickr.com/2455/3836984664_6381273cef_o.jpg" rel="facebox"><img src="http://farm3.static.flickr.com/2455/3836984664_5904acc57d.jpg" class="float_left  narrow"  /></a></p>]]>
</description>
<comments>http://blog.matake.jp/archives/hoptoad-exception-notifier-for-rails</comments>
<link>http://blog.matake.jp/archives/hoptoad-exception-notifier-for-rails</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/hoptoad-exception-notifier-for-rails</guid>
<category>Ruby Rails</category>
<pubDate>Wed, 19 Aug 2009 22:13:05 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>Twitter にブログの更新情報を通知する *twitterfeed より速い* 方法</title>
<description>
<![CDATA[<p><a href="http://twitbackr.com/"><img src="http://farm4.static.flickr.com/3420/3822220732_5e5345589b.jpg" class="border narrow"></a></p>

<p><a href="http://www.ideaxidea.com/archives/2008/05/twitter_1.html">Twitterにブログの更新情報を通知する方法 - IDEA*IDEA</a> なんて記事を見つけたので、タイトルかぶせてみるw</p>

<p>おそらく30分〜数時間おきに登録されたブログの RSS にアクセスしてる TwitterFeed よりは、更新 Ping 受け取った時だけ RSS 見に行く Twitbackr の方が、きっと速いよ。</p>

<p>ブログの使い方になれてる人なら、きっと <a href="http://twitbackr.com">twitbackr</a> の twitter ログインボタンをクリックすれば twitbackr の使い方もすぐ分かる、はず。</p>]]>

</description>
<comments>http://blog.matake.jp/archives/twitter_twitterfeed</comments>
<link>http://blog.matake.jp/archives/twitter_twitterfeed</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/twitter_twitterfeed</guid>
<category></category>
<pubDate>Mon, 17 Aug 2009 23:30:34 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>Twitbacker あらため Twitbackr をリリースしました。</title>
<description>
<![CDATA[<p>Twitbacker 終了から10日程たってしまいましたが、Twitbacker あらため <a href="http://twitbackr.com/">Twitbackr</a> というサービスをリリースしました！</p>

<p><a href="http://twitbackr.com/"><img src="http://farm4.static.flickr.com/3420/3822220732_5e5345589b.jpg" class="border narrow" /></a></p>

<p>さっそく使い方をレポートしてくれてる人がいるので、<a href="http://diarymodoki.blog59.fc2.com/blog-entry-888.html">使い方はこちらを参考に</a>。</p>

<p>Twitbacker からの変更点としては、</p>

<ol>
<li>Twitbackr 上で Twitter のパスワードを入力する代わりに、Twitter に移動して「Allow」するように変わった。（OAuth）</li>
<li>Twitbackr が自動的に URL を短縮するので、より長いタイトルを POST できるようになった。</li>
<li>Twitter 上での自分のスキンが自動的に適用されるようになった。</li>
<li>ameblo で Twitbacker が使えていなかった問題を解決した（たぶん）</li>
<li>Twitbackr 関連のみんなのつぶやきがトップページに表示されるようになった。</li>
<li>Dashboard (ログイン後のページ) では Twitbackr 関連のあなたのつぶやきが表示されるようになった。</li>
</ol>

<p>今度のサーバーはすごい気軽にいじれるので、メンテもきっと超高速です！<br />
これからも <a href="http://twitbackr.com/">Twitbackr</a> をよろしくm_ _m</p>

<p>ps.<br />
サポートは Twitter 上の <a href="http://twitter.com/twitbackr">@twitbackr</a> でやっていく予定です。</p>]]>

</description>
<comments>http://blog.matake.jp/archives/twitbacker-is-now-twitbackr</comments>
<link>http://blog.matake.jp/archives/twitbacker-is-now-twitbackr</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/twitbacker-is-now-twitbackr</guid>
<category>Web</category>
<pubDate>Sat, 15 Aug 2009 10:49:42 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>Twitbacker 終了のお知らせ。</title>
<description>
<![CDATA[<p><a href="http://farm4.static.flickr.com/3578/3792071373_d7f302ce9a_o.png" rel="facebox"><img class="border narrow" src="http://farm4.static.flickr.com/3578/3792071373_4c6a84c196.jpg" /></a></p>

<pre>
追記）
現在こちらに移転作業中です。<a href="http://twitbackr.com">http://twitbackr.com</a>
ping 受付を開始したら、<a href="http://twitter.com/twitbackr">http://twitter.com/twitbackr</a> で通知します。
</pre>

<pre>
追記2）
移転作業は無事完了しました。Ping URL の再取得＆再設定をお願いします。
<a href="http://twitbackr.com">http://twitbackr.com</a>
</pre>

<p>かれこれ2年程前に作った Twitbacker というサービスが、本日閉鎖されました。</p>

<p>Twitbacker は（なぜか）最近ちらほら使いだしたユーザが増えてたようなので、なおさら残念です。特にユーザ向けの ML とかは無かったので、大半のユーザさんは突然サービスが止まって驚いてるんだろうな。。。ごめんなさい m_ _m</p>

<p>お知らせブログはこのブログの Twitter タグが付いた記事の一覧だったけど、僕もこの件はサービス止まってから知ったし、終了前に記事を書くことはできずでした。</p>

<p>まぁでも、前の会社辞めてからよく一年近くサービスが続いたなぁ〜、というのが正直な感想です。サーバは会社のやつ間借りしてたしね。</p>

<p>まぁコードは手元にあるから、ドメインさえあればその辺の安いレンタルサーバ（というか Heroku）でも十分動くだろうけど、BASIC 認証使ってたり Rails のバージョンが 1.2.3 だったりして、そのままアップは厳しそう。</p>

<p>お盆に時間が取れれば（≒ ネット環境のある場所にいれば）、Twitter と Facebook に投稿できるやつを作ってみるかなぁ〜。</p>]]>
<![CDATA[<p>ps.<br />
Drecom Wanted という、僕が初めて作った Web サービスも、その障害を全うしたようです。Good bye, Twitbacker and Wanted!</p>]]>
</description>
<comments>http://blog.matake.jp/archives/twitbacker_closed</comments>
<link>http://blog.matake.jp/archives/twitbacker_closed</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/twitbacker_closed</guid>
<category>Doshisha</category>
<pubDate>Thu, 06 Aug 2009 02:33:20 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>ナルニア国物語 第2章：カスピアン王子の角笛</title>
<description>
<![CDATA[<p>ライオンと魔女に続く第2章。</p>

<p>小さい頃に読んだけど、ストーリーは完全に忘れてました。きっと、本で読んだときはあまり面白くなかったんだと思います。</p>

<p>まぁそのおかげで、新鮮な気持ちで見ることができました（笑</p>

<p>カスピアン王子、かっこ良かった！<br />
そして、ルーシーきれい。</p>

<p>次回作の「朝びらき丸 東の海へ」は2010年公開らしいです。朝びらき丸は僕が最初に読んだナルニアシリーズなので、楽しみ♪</p>

<div class="hreview" >
<a class="item url" href="http://www.amazon.co.jp/%E3%83%8A%E3%83%AB%E3%83%8B%E3%82%A2%E5%9B%BD%E7%89%A9%E8%AA%9E-%E7%AC%AC2%E7%AB%A0-%E3%82%AB%E3%82%B9%E3%83%94%E3%82%A2%E3%83%B3%E7%8E%8B%E5%AD%90%E3%81%AE%E8%A7%92%E7%AC%9B-2-Disc%E3%83%BB%E3%82%B9%E3%83%9A%E3%82%B7%E3%83%A3%E3%83%AB%E3%83%BB%E3%82%A8%E3%83%87%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3-DVD/dp/B001EI5LME%3FSubscriptionId%3D15SMZCTB9V8NGR2TW082%26tag%3Dbianca0b-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001EI5LME">
<img src="http://ecx.images-amazon.com/images/I/51PMXroAwpL._SL160_.jpg" alt="photo" class="photo" />
</a>
<dl class="clearfix">
<dt class="fn">
<a class="item url" href="http://www.amazon.co.jp/%E3%83%8A%E3%83%AB%E3%83%8B%E3%82%A2%E5%9B%BD%E7%89%A9%E8%AA%9E-%E7%AC%AC2%E7%AB%A0-%E3%82%AB%E3%82%B9%E3%83%94%E3%82%A2%E3%83%B3%E7%8E%8B%E5%AD%90%E3%81%AE%E8%A7%92%E7%AC%9B-2-Disc%E3%83%BB%E3%82%B9%E3%83%9A%E3%82%B7%E3%83%A3%E3%83%AB%E3%83%BB%E3%82%A8%E3%83%87%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3-DVD/dp/B001EI5LME%3FSubscriptionId%3D15SMZCTB9V8NGR2TW082%26tag%3Dbianca0b-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001EI5LME">ナルニア国物語/第2章:カスピアン王子の角笛 2-Disc・スペシャル・エディション [DVD]</a>
<img src='http://www.assoc-amazon.jp/e/ir?t=bianca0b-22&l=ur2&o=9' width='1' height='1' border='0' alt='' />
</dt>
<dd>ウォルトディズニースタジオホームエンターテイメント 2008-11-21</dd>
<dd>売り上げランキング : 3976</dd>
</dl>
<dl>
<dt>
<strong>おすすめ平均  </strong><img src="http://g-images.amazon.com/images/G/01/detail/stars-3-5.gif" border="0" alt="star" />
</dt>
<dd><img src="http://g-images.amazon.com/images/G/01/detail/stars-5-0.gif" border="0" alt="star" />映画館で5回観ました！</dd>
<dd><img src="http://g-images.amazon.com/images/G/01/detail/stars-4-0.gif" border="0" alt="star" />あいかわらず美しいナルニアの自然</dd>
<dd><img src="http://g-images.amazon.com/images/G/01/detail/stars-5-0.gif" border="0" alt="star" />これは、傑作。</dd>
<dd><img src="http://g-images.amazon.com/images/G/01/detail/stars-3-0.gif" border="0" alt="star" />１章と比べちゃうと</dd>
<dd><img src="http://g-images.amazon.com/images/G/01/detail/stars-4-0.gif" border="0" alt="star" />格調の高さ、ユーモアが無くなっています。残念！</dd>
</dl>
<p class="similar">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001G9U568/bianca0b-22/ref=nosim/" target="_top"><img src="http://images.amazon.com/images/P/B001G9U568.09._SCTHUMBZZZ_.jpg"  alt="インディ・ジョーンズ/ クリスタル・スカルの王国 スペシャルコレクターズ・エディション 【2枚組】 [DVD]" style="border:none;font-size:10px;" /></a> <a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001IECYLA/bianca0b-22/ref=nosim/" target="_top"><img src="http://images.amazon.com/images/P/B001IECYLA.09._SCTHUMBZZZ_.jpg"  alt="ハムナプトラ3 呪われた皇帝の秘宝 リミテッド・バージョン [DVD]" style="border:none;font-size:10px;" /></a> <a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001KEM0DA/bianca0b-22/ref=nosim/" target="_top"><img src="http://images.amazon.com/images/P/B001KEM0DA.09._SCTHUMBZZZ_.jpg"  alt="ハンコック エクステンデッド・コレクターズ・エディション 【Amazon.co.jp 限定リバーシブル・ジャケット仕様】 [DVD]" style="border:none;font-size:10px;" /></a> <a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0019R6L9M/bianca0b-22/ref=nosim/" target="_top"><img src="http://images.amazon.com/images/P/B0019R6L9M.09._SCTHUMBZZZ_.jpg"  alt="ライラの冒険 黄金の羅針盤 コレクターズ・エディション(2枚組) [DVD]" style="border:none;font-size:10px;" /></a> <a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001G75F88/bianca0b-22/ref=nosim/" target="_top"><img src="http://images.amazon.com/images/P/B001G75F88.09._SCTHUMBZZZ_.jpg"  alt="ドラゴン・キングダム プレミアム・エディション [DVD]" style="border:none;font-size:10px;" /></a>
</p>
<p class="gtools">by <a href="http://www.goodpic.com/mt/aws/index.html" >G-Tools</a> ,  <abbr class="dtreviewed" title="2009/08/03">2009/08/03</abbr></p></div>]]>

</description>
<comments>http://blog.matake.jp/archives/the-chronicles-of-narnia_prince-caspian</comments>
<link>http://blog.matake.jp/archives/the-chronicles-of-narnia_prince-caspian</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/the-chronicles-of-narnia_prince-caspian</guid>
<category>Books</category>
<pubDate>Mon, 03 Aug 2009 02:01:30 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>OAuth gem で multipart や xml、json データを POST する方法</title>
<description>
<![CDATA[<p>OAuth の POST リクエストでは、基本的に <strong><em>Content-type = x-www-form-urlencoded</em></strong> のデータを送ることが想定されています。</p>

<p>もちろんそれ以外にも Content-type が multipart/form-data や application/xml、application/json などの場合も、request body が signature base string に入らないという違いはあるものの、OAuth を使って POST することは可能です。</p>

<p>仕様的には。</p>

<p>smart.fm でも一部 API で multipart (upload file) や xml/json データ (save study data : comming soon) をポストしないといけない API があるのですが、みごと ruby の oauth gem ではそれらに失敗しました。</p>

<p>原因は、OAuth::Consumer#create_http_request の以下の１行。青色の部分を赤色の部分のように変えれば動きます。</p>

<pre>
module OAuth
  class Consumer
    def create_http_request(http_method, path, *arguments)
      http_method = http_method.to_sym
      
      if [:post, :put].include?(http_method)
        <span style="color:blue"># data = (arguments.shift || {}).reject { |k,v| v.nil? }</span>
        <span class="notice">data = arguments.shift
        data.reject! { |k,v| v.nil? } if data.is_a?(Hash)</span>
      end
      
      以下略
  end
end
</pre>

<p>というところを、github の master ではこの bug が fix されているのですが、rubyforge にはまだ反映されていなくて、ちょっとハマりました。これを fix すれば、こんな感じで POST できます。</p>

<pre>
access_token.post(path, params, {'Content-Type' => 'multipart/form-data'})
access_token.post(path, xml, {'Content-Type' => 'application/xml'})
access_token.post(path, json, {'Content-Type' => 'application/json'})
</pre>]]>
<![CDATA[<p>ps.<br />
もちろん、可能な限り x-www-form-urlencoded で送る方が、バグも少ないでしょうし、セキュアです。</p>

<p>また、もし Service Provider が <a href="http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html">OAuth Request Body Hash</a> という extension をサポートしている場合は、Content-type が x-www-form-urlencoded でなくても post body を signature base string に含めることで、x-www-form-urlencoded 同様セキュアにデータを送ることができます。</p>]]>
</description>
<comments>http://blog.matake.jp/archives/oauth_gem_multipart_xmljson_post</comments>
<link>http://blog.matake.jp/archives/oauth_gem_multipart_xmljson_post</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/oauth_gem_multipart_xmljson_post</guid>
<category>Ruby Rails</category>
<pubDate>Wed, 29 Jul 2009 23:07:29 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>

<item>
<title>smart.fm OAuth が OAuth 1.0a に対応します。（＋OAuth 1.0a 対応方法概要）</title>
<description>
<![CDATA[<p>ruby oauth gem も rails oauth plugin も OAuth 1.0a 対応になったので、smart.fm も OAuth 1.0a に対応することにしました。</p>

<p>実装は既に終わったので、予定通りだと明日の昼前に本番に反映される予定です。</p>

<p>OAuth の脆弱性が発見されてから、暫定的に以下の2つの制約を加えましたが、OAuth 1.0a 対応でどちらの制約も外れます。</p>

<ol>
<li>authorize 時に渡される oauth_callback を無視</li>
<li>request token の有効期間もかなり短く</li>
</ol>

<p>ただし OAuth 1.0a では oauth_callback を指定するタイミングが authorize 時から get request token 時に変更になっているので、authorize 時に oauth_callback 渡しても無効、というのは変わりません。</p>

<p>もちろん従来のフローでアクセスする consumer に対する動作は変わらないので、oauth_callback を利用しない場合は特に consumer 側の変更は必要ありません。consumer 登録時に登録する oauth_callback は、従来通り有効です。</p>]]>
<![CDATA[<p>同時に smart.fm で利用している Yahoo! / Google / Twitter の OAuth でも 1.0a を利用するように変更したので、ruby の場合の OAuth 1.0a への変更点をまとめておきます。</p>

<p>OAuth を利用されている smart.fm API developer の方で oauth_callback を指定したい方は、こちらを参考に該当部分のコードを変更していただければと思います。</p>

<dl>
<dt>get request token 時に oauth_callback を指定</dt>
<dd><p><pre>consumer.get_request_token(:oauth_callback => callback)</pre></p></dd>
<dt>authorize されて帰って来た時に oauth_verifier を取得</dt>
<dd><p>callback の query に oauth_token に加えて oauth_verifier が帰ってくるので、session なりに保存します。（get request token で oauth_callback を指定した時のみ、この oauth_verifier が必要になります）</p></dd>
<dt>get access token 時に oauth_verifier を利用</dt>
<dd><p><pre>request_token.get_access_token(:oauth_verifier => oauth_verifier)</pre></p></dd>
<dt>補足</dt>
<dd>
<p>OAuth 1.0a 未対応のサービスと共存させる為には、authorize_url を生成する場所で以下のようにやってやれば OK です。</p>
<p><pre>
authorize_url = if request_token.callback_confirmed?
  # Serveice Provider is supporting OAuth 1.0a
  request_token.authorize_url
else
  request_token.authorize_url + "&oauth_callback=#{callback}"
end
</pre></p>
</dd>
</dl>

<p>ps.<br />
oauth plugin はそのままだと OAuth 1.0a にしか対応していないので、この plugin を利用している SP の皆様はお気をつけを。</p>]]>
</description>
<comments>http://blog.matake.jp/archives/smartfm_oauth_oauth_10a_oauth_10a</comments>
<link>http://blog.matake.jp/archives/smartfm_oauth_oauth_10a_oauth_10a</link>
<guid isPermaLink="true">http://blog.matake.jp/archives/smartfm_oauth_oauth_10a_oauth_10a</guid>
<category>smart.fm</category>
<pubDate>Thu, 16 Jul 2009 20:29:54 +0900</pubDate>
<author>blog@matake.jp (NOV)</author>
</item>


</channel>
</rss>