「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@549) [中] [未処理]
@549■ (#1752) なこったーの認証をもっと手軽にする - クジラ飛行机 (2010-09-07 16:44) /中 未処理
なこったーの認証手順がなかなか難しく思います。

「ブラウザ部品」を使うことで、
ユーザーは、IDとパスワードを入力して[許可する]のボタンをクリックするだけで、
自動的に暗証番号を取得する仕組みを作るといいと思います!

(#1753) サンプルプログラムか、ツールという形で良いでしょうか - U D (2010-09-07 22:31) /中 未処理
なこったーの「認証」命令なんですが、どちらかと言うと実装方法のサンプル
くらいのつもりで書いただけなんですよね。

本当は、<リクエストトークン→認証URL→アクセストークン>という流れを、
アプリケーションの実装者それぞれで個別に実装してもらうのが良い。
(例えば config 画面で PIN を入力させるようなクライアントだとか。実際にあります。)
ところが仰られている通り「認証手順がなかなか難しい」ので、出来れば難しい所は
ひとまとめにしてしまいたい。…ということで一応「認証」を実装した訳ですが。

やはり、もっと分かりやすいものも用意したいですね。

# 「URLを起動する」のも、環境によってはブラウザが立ち上がりませんし。

ただ、ライブラリの設計者としては、「認証」命令自体にブラウザ関連の操作を
組み込むのにはあまり積極的ではありません:
  * できるだけ Twitter API とのやり取りを実装しておくだけに留めたい。
  * cnako でも使える設計にしておきたい。
 (cnako で Twitter 使いたいなでしこユーザはいない気もしますが。)
  * あとライブラリが ID / pass を要求するのは露骨かなぁという気も。

# ちなみに、「認証」は一応 cnako でも動きますが、「尋ねる」ダイアログに
# フォーカスを持ってかれて、ブラウザで「許可→アクセス PIN コピペ」できない……

逆に、 GUI 向けに拡張した「■VNakotter + Nakotter」を作るだとか、
ブラウザ部品を駆使して、ID/passを入力するだけでOKな認証サンプル(orツール)を
追加するだとか、"ライブラリ汚染"しない方向性なら全く問題ないです。
特に、サンプルはもうどんどん作って欲しいです。よろしくお願いします>各位

あと参考に。
ブラウザ部品は使わなくても力任せで PIN の取得できそうですね。
(質問掲示板でそんなサンプルがありました)
もちろん、ブラウザ部品に任せてブラウザ系の命令を駆使しても全自動化できますが。
ただ認証セキュリティの観点から、ユーザに許可ボタンを押させる方がいいので、
そこの手順だけはブラウザに任せた方が良いだろうと思います。

----

要約すると僕は「Nakotterの認証」命令そのものを改良する気があまりないので、
誰か便利な「Nakotterで認証するツール」を作ってみませんか。
<リクエストトークン→認証URL→アクセストークン>というたった 3 step なのでそう難しくないハズです。

----

それから、もう1つの方向性として。
「もっと手軽に」ということなので、マニュアルを充実させるのも一つの手ですね。
ユーザーズ Wiki に、どなたか執筆してみませんか。

Cf.
 * http://www.undefin.net/nadesiko/xpln/lesson/L3-1
 * http://nadesiko.g.hatena.ne.jp/mame-tanuki/20100829/nakotter_index

現状、うちのサイトの簡易仕様書より、まめ狸さんの blog 記事の方が詳細で秀逸です。
仕様書に正式に記載してない命令まで細かくカバーされてます。ありがとうございます。

(#1763) トライしてみました - mr (2010-09-12 02:14) /中 未処理
トライしてみました。
・・・が・・・、かなり力不足な感じでした。
ライブラリも変更しないとできませんでした。
IDとパスワードを入れるところあたりは、ブラウザインターフェイスのままです。
(個人的には、セキュリティ的な意味で、ここはそのままの方がいいような気はします)
結果、少しは手軽になったものの、総じて微妙な感じになってしまいました。。。

###########################
!「nakotter.nako」を取り込む

状況とはステータスバー

ConsumerKey=「Consumer key?」と尋ねる
ConsumerSecret=「Consumer secret?」と尋ねる

なこったークライアントとはNakotter
そのoauthのコンシューマのトークンキー = ConsumerKey
そのoauthのコンシューマのシークレット = ConsumerSecret

なこったークライアントで認証1する
認証ブラのURL=それ
待機

認証ブラとはブラウザ
そのレイアウトは「全体」
その完了した時は
  状況=認証ブラのURL
  もし、認証ブラのURL=「http://twitter.com/oauth/authorize」ならば
    ソース=認証ブラのテキスト
    暗証番号=ソース\58
    暗証番号=暗証番号をトリム
    #暗証番号を言う
    なこったークライアントで暗証番号から認証2する
    メモ記入

#nakotter.nakoの変更
/*
 ・認証1~
  oauthのリクエストトークン取得処理
  _ = oauthの認証URL取得
 ・認証2({文字列}Nから)~
  oauthからNでアクセストークン取得処理
*/
###########################

(#1764) Re:トライしてみました(ライブラリ変更無し&INI保存版) - まめ狸 (2010-09-12 09:04) /中 未処理
はじめまして。U Dさんの回答にてブログ記事を紹介していただいた、まめ狸です。

mrさんの簡易認証ツールが非常に便利そうなので、少し手を加えてみました。
変更点は、
・ライブラリ変更→Nakotterグループを拡張したMyNakotterグループを定義
・認証で取得したOAuth認証情報をINIファイルに保存
の2点です。

###########################
#-----------------------------------------------------------------------
# INIファイル設定
#-----------------------------------------------------------------------
INIファイル=「d:\data2\nakotter.ini」
#-----------------------------------------------------------------------

!「nakotter.nako」を取り込む
#-----------------------------------------------------------------------
# 簡易認証用拡張なこったー「MyNakotter」定義
#-----------------------------------------------------------------------
■MyNakotterとは +Nakotter
 ・認証1~
  oauthのリクエストトークン取得処理
  _ = oauthの認証URL取得
 ・認証2({文字列}Nから)~
  oauthからNでアクセストークン取得処理
#-----------------------------------------------------------------------
# GUI定義
#-----------------------------------------------------------------------
認証ブラとはブラウザ
そのレイアウトは「全体」
その完了した時は
  状況=認証ブラのURL
  もし、認証ブラのURL=「http://twitter.com/oauth/authorize」ならば
    ソース=認証ブラのテキスト
    暗証番号=ソース\58
    暗証番号=暗証番号をトリム
    #暗証番号を言う
    なこったークライアントで暗証番号から認証2する
    それをINIファイルに追加保存
    「INIファイル保存終了」と言う

状況とはステータスバー
#-----------------------------------------------------------------------


ConsumerKey=「Consumer key?」と尋ねる
ConsumerSecret=「Consumer secret?」と尋ねる

INIファイルのINI開いて、ハンドルに代入。
ハンドルで「OAuth」の「consumer_key」にConsumerKeyをINI書く
ハンドルで「OAuth」の「consumer_secret」にConsumerSecretをINI書く
ハンドルのINI閉じる

なこったークライアントとはMyNakotter
そのoauthのコンシューマのトークンキー = ConsumerKey
そのoauthのコンシューマのシークレット = ConsumerSecret

なこったークライアントで認証1する
認証ブラのURL=それ
待機
###########################

INIファイルに保存したOAuth認証情報の利用方法のサンプルは、こんな感じです。


###########################
INIファイル=「d:\data2\nakotter.ini」

!「nakotter.nako」を取り込む
なこったークライアントとはNakotter

INIファイルのINI開いて、ハンドルに代入
そのoauthのコンシューマのトークンキー = ハンドルで「OAuth」の「consumer_key」をINI読む
そのoauthのコンシューマのシークレット = ハンドルで「OAuth」の「consumer_secret」をINI読む
そのoauthのトークンキー = ハンドルで「OAuth」の「oauth_token」をINI読む
そのoauthのシークレット = ハンドルで「OAuth」の「oauth_token_secret」をINI読む
ハンドルのINI閉じる

なこったークライアントからAPI確認
それを言う  #結果→「ok」と表示。
###########################


(#1765) Re:Re:トライしてみました(ライブラリ変更無し&INI保存版) - まめ狸 (2010-09-12 11:17) /中 未処理
2回目の起動時は「コンシューマ・キー」と「コンシューマ・シークレット」を再入力する手間を省く&複数のtwitterアカウントでの切替がスムーズにできるように、上記のサンプルを、さらに改良しました。
http://nadesiko.g.hatena.ne.jp/mame-tanuki/20100912/oauth_tool

改良点は、
・ツール起動時に、既に認証情報保存先であるiniファイルが存在する場合は、その「コンシューマ・キー」と「コンシューマ・シークレット」が使用される。
・ツール起動時に、既に認証情報保存先であるiniファイルが存在する場合は、認証によって取得した新たな情報で上書きされる。
の2点です。


(#1752)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能