ひまつぶし雑記帖

またり引きこもりの週末

2009/12/27 [21:30:01] (日) 天気

今日は出かけることもなく、いちんち部屋でごろごろ。例によってOAuthについてググりまくりで、どうにかスクリプトも形になってきた。もたもたしてたのは、セッション管理、というか、トークンシークレットの扱いをどうするかであーだこーだしたから。結局、DBに登録することにした。もうひとつ、perlのNet::OAuthがわたしのスキルの範囲外で手に負えなかったから。結局、OAuth部分のスクリプトを現物あわせで自作することにした。
ひっかかってたこの2点を、自前でやることにする、と決めたので、後は力仕事でガシガシ書くだけ。
せっかく、なんとなーく、OAuthについて見えてきたので、yahooとか他のOAuth窓口APIでも遊んでみようかな、とか。来年の元旦は仕事で移動もできず。部屋でのたくってることになりそうなので、スクリプト遊びする時間はたっぷりありそうだし。

久しぶりに流してみた「指輪物語」。やっぱり面白い。ガンダルフなんて棒を振り回す、ただの短気で乱暴なジジイだもんなあ。サム・ワイズ最高っす。

»電子書籍制作代行についてはこちら

token secretの保存

2009/12/26 [17:58:01] (土) 天気

しかたないんで、自前でセッション管理してみることにした。ユーザーのクッキーに記録するのはIDだけ。あとはそれを見て、DB_Fileに記録したaccess token と token_secret を引っ張り出す。
twitterの OAuth で使うtokenは永続性がある=ずーっと使えるって話だからこんな面倒なことになるのだ。その場限りなら、ユーザーのクッキーだけでもまあギリギリOKだろうと思ったんだけど、ずっと使えるトークンだと、ユーザーのブラウザのクッキーに記録させるのはちょっと怖いじゃないか。で、ずっと使えるのに、クッキーをその場限りにしておいて、いちいちアクセスさせるとAPI制限に引っかかりそうだし。

てことでコードを書くだけ書いた。それでも、これでも、やっぱり。面倒くさいだけのOAuth使うヒマがあったら、Basic認証でイケよ、どうせセキュリティ的には目くそ鼻くそだぜ、と思う自分がいて、モチベーションが上がらないまま、週末なのですでに赤ワイン。

とはいえ、yahooとかmixiとかgoogleとか、OAuthで繋ぐサービスがあるから、調べておいて損はない、はずだよなぁ。

ちなみに縦書きtwitter、「たてたったー」は、まだBasic認証です。

[12/27 16:26:52]
哀しいほどハマったので、メモ。 perl の Net::OAuthは、わたしには手におえないことがわかった。ちょろっと改造しようにも、オブジェクト指向とやらで、わたしのスキルではソースを追えない。ので、OAuthも自前で作った。そこでのハマりのメモ。

その1.
署名は、メソッド(GETとかPOST)、リクエスト先のURL(パラメータは入れない)、URLにくっつけるパラメータ。の3種類を合わせて元になる文字列を作る。このとき、各々URLエンコードが必要なのだが、ハマったのがURLにくっつけるパラメータ。
key=value&key=value形式でvalueをURLエンコードするのはいいんだけど、一度URLエンコードした上で&で繋いでひとつの文字列にしたら、さらに全体をURLエンコードをする必要があった。2重にURLエンコードするような感じ。
その2.
署名に使うシークレットキーは、コンシューマーキーとアクセストークンのシークレットキーがある。twitterの場合なのかHMAC-SHA1の場合なのか調べてないのだが、アクセストークンを取得するまでは、当然ながらコンシューマーキーしか手元にはない。
形式は各々URLエンコードして&で繋いで、それをキーに使用する。
コンシューマーシークレット&アクセストークンシークレット
まだアクセストークンのないフェーズでも&が必要だった。
「コンシューマーシークレット&」というケツに&をつけてキーにする。

http://developer.yahoo.co.jp/other/oauth/api.html
http://developer.yahoo.co.jp/other/oauth/signinrequest.html

さすが yahoo!実例が載っていて大助かりだった。

 

»電子書籍制作代行についてはこちら

OAuth で twitter にアクセス

2009/12/23 [21:42:48] (水) 天気

OAuthをごそごそやってたのは twitter がそのうち Basic認証じゃなくて OAuthをAPIのクチにする、というの読んだから。
OAuthのわかりやすい解説は他の有用なサイトにまかせるとして、素人のわたしの理解をメモる。

やろうとしているコト。

現状。
1)縦書きtwitter(わたしの作ったtwitterを利用するサイト)がある。
2)縦書きtwitterは現状ではユーザーにtwitterのIDとPASSを入力してもらって、そのユーザーのタイムラインを取得、表示している。
※入力してもらった情報はユーザーのクッキーに保存。twitterに対してはBasic認証で繋いでいる。

この(2)の部分を、今後twitterが推奨するという、OAuthでの認証にしてみたい。

ざっくり大雑把な理解で流すけど。
1)縦書きtwitterにユーザーがアクセスする。
2)縦書きtwitterは、twitter本体に対して、縦書きtwitterは登録してありますよ、とお伺いをたてる。
3)twitter本体が、おう、お前久しぶりやな、ということがわかれば、ユーザーをこっちに寄こしなさい、ということで、ユーザーを twitterにリダイレクトする。
4)ユーザーは twitter に飛ばされて、そこでIDとPASSを入力して「承認」すると、ふたたび縦書きtwitterに戻される。
5)ユーザーは、twitterからもらう アクセスのためのtoken (IDみたいなもんだ)と、tokenを含めたアクセスを正しく認識するためのtoken_secret(パスワードみたいなもんだ)を持って戻ってくることになる。
6)縦書きtwitterは、ユーザーのtokenとtoken_secret=IDとパスワードをどこかに保存しておいて、ユーザーに縦書きtwitterを使ってもらう。
※保存するのはたぶんクッキー。DBに保存したら、今度はそのIDとPASSがだれのものか、というログインが必要になるしねえ。

一応、OAuthで TL を取得したり、つぶやきを投稿したりできるようにはしたけど。はたして、これ、本当に安心で便利なシロモノなのか、そこんとこがまるで理解できない。

Basic認証は、IDもパスワードも平文で流れるのでセキュリティに問題があるのはよくわかる、けど。Basic認証にしろ、OAuthにしろ、少なくともアクセスしている間は、IDとパスワードをどこかに保存しなきゃいけない。この穴はBasic認証だろうとOAuthだろうと同じじゃないのか。見えないIFrameに仕込まれる程度のチャチなクッキー引っこ抜きに引っかかって「なりすまし」被害に合うのは防げない、ような気がする。

ユーザーにしてみれば、yhooなりmixiなり、ひとつのIDとパスワードを使いまわしできるので管理がラク、ってだけだったら(セキュリティ的に画期的になにかが変わったわけでもなさそうな)OAuthなんてこんな「ややこしい」手順を踏まなきゃいけないメリットは感じないんだよなあ。

OAuthの良さを誰か教えてくだされ~。

 

»電子書籍制作代行についてはこちら

OAuthでハマったのでメモ

2009/12/23 [12:43:31] (水) 天気

twitter の OAuth認証を、と思ってごそごそ調べては試行錯誤。OAuthの一次情報、仕様を見ながら、自分でサインを作ればこんなにハマらなかったと思うんだけど、ラクしようと思って、perl の Net::OAuth ver0.20に投げたのが始まりだ。
以下のページを参考にさせていただいて、CPANからOAuthをインストールすればラクショーっぽいぞ、と。
http://blog.photoble.net/archives/category/memo/oauthtwitter
http://sayama-yuki.cocolog-nifty.com/blog/2009/09/twitteroauth-d7.html

甘かった。

その1.最初のリクエストで oauth_callback_confirmed が返ってこない
その2.twitterから、リダイレクトされて戻ってきたときには 401。認証されず、 oauth_verifier も返ってこない。

なんじゃそりゃ、と。延々ググりまくって今朝未明まで。今日も天気だというのに早起きして、ググる。…ヒットしないんだけど、どうやら OAuthの 1.0 と 1.0a の違いが原因っぽい。oauth_callback_confirmed も oauth_verifier も 1.0a から導入されたパラメータ、てことだ。OAuthで作られるパラメータを確認してみると、指定しているにも関わらず、callbackが入っていない。
Net/OAuth/で grep してみて OAuth.pm を読んでようやく解決。
request パラメータを組み立てるところに

一行入れるだけ、だった。


↑これが正しいリクエストヘッダー

CPANは便利なんだけど、素人芸の、ブラックボックス、コピペ使いは限界があるんだよなあ。

ここが通ったら次はアクセストークン取得でそれの扱いをどうするのか、またググる、か。でも気力体力が尽きたので以下次号だ。

 

»電子書籍制作代行についてはこちら

perl パズル

2009/12/21 [23:27:40] (月) 天気

縦書きtwitterを眺めると、全角にしてタテに並べるURLがうっとーしー。除去するのは簡単だけど、twitterの性格上、リンクは必需品なので、どうにかできないものか、と。
記入されているのがURLだったら、それを削除して別エリアにリンクを表示させたい。

最初、push だけで、イケんじゃないかと思ったら甘かった。pushの返り値、配列の要素の数が入ってしまう。なので、無意味な sprintf を噛ませてみた。なんか不恰好だけど、欲しい結果が得られるので良しとするか。…うううむ、やっぱかっちょわりいなあ。

て、まわりくどい阿呆だった。

これだけでOK

 

»電子書籍制作代行についてはこちら

メモ encodeで変換失敗を第三引数でフォロー

2009/11/11 [14:27:08] (水) 天気

Encode::decode()でutfフラグをつけてゴソゴソ。その後Encode::encode()でutfフラグを落として出力したい文字コードに。というありがちな日常風景だ。

で、このとき、変換できない機種依存文字などはデフォルトだと「?」になる。それはそれでいいんだけど。変換できない文字があるかどうかを判定したいときに変換後文字列から「?」を grep するのはなにかと面倒だったりするので、ぐーぐるサマに聞いてみた。



判定できないものを第三引数で受けることができるのだった。上記の例だと判定できないものをサブルーチンでマークしたり、判定できないものが混じってたらその行を出力したり。

便利だったんで忘れないうちにメモ

[11/12 00:20:41]
便利といえば。twitter の webに新着通知機能がついてた。
ストリーミングでリアルタイム実況だ、とか言ってたけど、この新着通知機能で十分、か。いちいち更新しなくても、新着があったらわかるようになって、らくちん度128倍アップだ。
どういう仕組みなんだろう。

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
名前:
飯田哲章
mail:
t2aki@mrh.biglobe.ne.jp
twitter:
t2akii

WEBサービス制作/電子書籍制作

検索
<<2019/11>>
     12
3456789
10111213141516
17181920212223
24252627282930

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版

iPhone電子書籍アプリ
小説同人誌Select iPhone電子書籍アプリ
『小説同人誌Select』

[18 Page]« »
1 2 3 4 5 6 7 8 9 10

TOTAL:2876

2019 (15)
1 (3)
2 (4)
3 (2)
4 (2)
5 (1)
6 (1)
8 (1)
10 (1)
2018 (21)
1 (3)
2 (2)
3 (2)
4 (1)
5 (1)
6 (6)
8 (1)
9 (1)
10 (2)
12 (2)
2017 (32)
1 (2)
2 (1)
4 (2)
5 (1)
6 (6)
7 (3)
8 (5)
9 (3)
10 (2)
11 (2)
12 (5)
2016 (41)
1 (5)
2 (5)
3 (2)
4 (3)
5 (4)
6 (6)
7 (2)
8 (2)
9 (3)
10 (1)
11 (4)
12 (4)
2015 (99)
1 (11)
2 (12)
3 (9)
4 (6)
5 (8)
6 (8)
7 (3)
8 (5)
9 (16)
10 (6)
11 (1)
12 (14)
2014 (112)
1 (16)
2 (5)
3 (6)
4 (12)
5 (16)
6 (19)
7 (9)
8 (6)
9 (4)
10 (8)
11 (6)
12 (5)
2013 (145)
1 (24)
2 (15)
3 (18)
4 (23)
5 (14)
6 (11)
7 (7)
8 (11)
9 (5)
10 (4)
11 (6)
12 (7)
2012 (103)
1 (1)
2 (1)
3 (4)
4 (3)
5 (7)
6 (26)
7 (17)
8 (5)
9 (8)
10 (10)
11 (11)
12 (10)
2011 (54)
1 (4)
3 (7)
4 (4)
5 (14)
6 (6)
7 (3)
8 (3)
9 (1)
10 (4)
11 (2)
12 (6)
2010 (70)
1 (12)
2 (7)
3 (6)
4 (6)
5 (3)
6 (10)
7 (6)
8 (4)
9 (3)
10 (4)
11 (3)
12 (6)
2009 (144)
1 (15)
2 (12)
3 (12)
4 (6)
5 (15)
6 (6)
7 (10)
8 (9)
9 (17)
10 (12)
11 (14)
12 (16)
2008 (148)
1 (10)
2 (6)
3 (10)
4 (11)
5 (13)
6 (10)
7 (13)
8 (19)
9 (18)
10 (12)
11 (13)
12 (13)
2007 (106)
1 (7)
2 (5)
3 (3)
4 (7)
5 (5)
6 (9)
7 (8)
8 (13)
9 (18)
10 (11)
11 (8)
12 (12)
2006 (158)
1 (28)
2 (28)
3 (25)
4 (7)
5 (9)
6 (7)
7 (12)
8 (13)
9 (10)
10 (7)
11 (6)
12 (6)
2005 (350)
1 (31)
2 (26)
3 (26)
4 (27)
5 (29)
6 (30)
7 (32)
8 (30)
9 (30)
10 (32)
11 (29)
12 (28)
2004 (292)
1 (24)
2 (24)
3 (29)
4 (27)
5 (28)
6 (25)
7 (26)
8 (24)
9 (12)
10 (19)
11 (26)
12 (28)
2003 (318)
1 (22)
2 (25)
3 (21)
4 (28)
5 (28)
6 (28)
7 (28)
8 (29)
9 (26)
10 (29)
11 (28)
12 (26)
2002 (317)
1 (29)
2 (26)
3 (26)
4 (25)
5 (28)
6 (30)
7 (27)
8 (21)
9 (25)
10 (27)
11 (28)
12 (25)
2001 (277)
1 (17)
2 (21)
3 (23)
4 (20)
5 (31)
6 (18)
7 (26)
8 (25)
9 (29)
10 (19)
11 (24)
12 (24)
2000 (53)
6 (9)
7 (4)
8 (2)
9 (3)
10 (1)
11 (15)
12 (19)
1999 (3)
7 (1)
10 (2)
1998 (18)
9 (9)
10 (7)
11 (2)