nDiki : OAuth

OAuth (オース)

API 認証プロトコルTwitter などが採用している。

2010年6月18日 (金)

今日のさえずり: ピタ・ゴラ・スー・イッチだって今日初めて知ってしまった

  • 08:47 ピタ・ゴラ・スー・イッチだって今日初めて知ってしまった。
  • 08:48 では、ジョンは何?
  • 08:49 テレビジョン?
  • 09:53 かっぱえびせん T シャツとすれ違った。予想外にさわやかな気分にさせられた。
  • 10:49 最近退勤時間の確認は foursquare へのチェックイン履歴頼りになっている。
  • 12:03 和風牛丼 350円。 (@ なか卯 神田佐久間町店) http://4sq.com/9tdwTs
  • 12:08 そういえばなか卯の夏季卵テイクアウト制限って今年はないの? 去年はどうだったっけ。
  • 12:32 その場で tweet するとさすがにあからさまな時のために予約投稿サービス使いたい。
  • 12:38 Twit Delay がいいのかな? http://twitdelay.net/
  • 12:50 Android からだと HootSuite Lite で予約投稿できるか。HootSuiteOAuth 対応まだ?
  • 12:59 Xperia 上の Web ブラウザから Twit Delay で3分後に予約投稿してみる。
  • 13:01 お、うまくいった。 QT @Naney: Xperia 上の Web ブラウザから Twit Delay で3分後に予約投稿してみる。
  • 13:05 挙手を。@nye_c RT @as_tone: 会社の冷蔵庫の上にボタン電池置いたの誰だ?! 正直に言いなさい! 今なら先生怒らないから!
  • 13:10 今週は日次レビューなしにガリガリやっていたので、今日は午前中にレビュー。しかし GTD 週次レビューレベルまではまわらず。時間とらねば。
  • 13:38 缶コーヒー 100円。
  • 13:39 ポツポツ雨降ってきた。 (@ 東神田金子ビル) http://4sq.com/cPcCEo
  • 13:49 ネカマが気になったのでチェックしてみたら @nekama は実在した。
  • 18:39 あ、雨ちょっと小降りになっている? 食べ物調達してくるか。今日もピザはないよね?
  • 18:48 メロンパンと野菜生活 213円。 (@ ファミリーマート神田佐久間町店) http://4sq.com/biJuCj
  • 24:04 肩から生えている毛の長さを測ったらまもなく12cmといったところだった。順調に育っております。
  • 24:34 プレイフル・シンキング読了。仕事が面白くないなと感じている人に超お薦め。もう一度読んでエッセンスを抽出しなくては。 http://amzn.to/aM3NJ9
[ 6月18日全て ]

2010年7月6日 (火)

今日のさえずり: 帰ってきたら笹が!

2010年07月06日

  • 07:14 36.8℃。
  • 07:27 @ishiduca ありがとうございます。今日は出社します。
  • 11:23 要求定義書/要求仕様書には複雑でややこしく実装に手間がかかるところほど、さらりとしか書かれていない件。
  • 12:07 お昼 473円。 (@ セブン-イレブン神田佐久間町店) http://4sq.com/cEfW1k
  • 13:19 缶コーヒー 100円。
  • 13:23 HootSuite ようやく OAuth 対応してたか。これで使ってみることができるよ。
  • 16:37 K-9 Mail で複数アカウント扱えるのだけれど、メールアドレス補完はメインの連絡先だけなんだな。 #Android
  • 19:14 病み上がりというか、まだ上がっていないので定時退社。
  • 19:20 会社に傘忘れてきた。 (@ 秋葉原駅 w/ 12 others) http://4sq.com/68fhHr
  • 19:33 HootSuite OAuth 対応記念に、再び HootSuite Lite 入れてみた。 #Android
  • 20:00 Evernote 共有ノートブックのフィードを FeedBurner 経由で Twitter に投げるの止めた。フィード自動投稿設定しておくと気軽にノートできないことが判明。
  • 20:10 帰ってきたら笹が!
  • 21:21 短冊に願い事書いて吊るした。これでバッチリだ。
  • 21:27 今年は水着買いたい。
  • 23:12 特別区民税・都民税の年税額が12で割り切れなくてとても困る。
  • 23:13 4期への配分で1期分だけ多くしているのは、500円単位にしたいからなのかな。
  • 23:20 RT @America_Amazon: 実はTL上でよく見かける「API」というものが何なのか、まったく理解していません。ご存知の方がいらっしゃいましたら「ダイ・ハード」に例えて説明していただけると助かります。APIの内のどれがブルース・ウィリスに当たるのでしょうか……。
[ 7月6日全て ]

2010年10月1日 (金)

Evernoteデベロッパーズミーティング

image:/nDiki/Flickr/5044375882.jpg

一昨日、橋本大也氏の情報考学の記事「10月1日開催 Evernoteデベロッパーズミーティング@デジタルハリウッド大学大学院 秋葉原メインキャンパス」で、Evernoteの日本初のデベロッパーズミーティングが開催されることを知った。 会場が秋葉原で会社帰りに寄れるし、Evernote を利用している中で API についてもちょっと興味を持ち始めていたので、いい機会だと参加申し込み。 Evernote 遍歴を整理してみたり。

で、本日退勤後参加してきた。まだ若い企業であること・日本法人「エバーノート株式会社」も今年設立されたばかりであることなどもあってか、即席的だけれどフレンドリーな雰囲気のある、皆でこれから盛り上げていきましょう的な良い雰囲気の会であった。 Evernote 好き度ちょっとアップ。

以下ノート

ウェブサイトエキスパート編集長 馮富久氏

開会のメッセージ。

Seth Hitchings 氏(Evernote Director of Partner Integrations)

「Integrating with Evernote

  • Trunk・Evernote Affiliate Program などがあるよ。
Evernote Site Memory

英語による発表。中島健氏が適宜通訳。

  • ユーザ視点では「適切な記事部分をクリップ」できるようになる。
  • パブリッシャー視点では「アフィリエイトプログラム」により収入を得られる。
  • 「Site Memory」という名前は Evernote ウェブクリッパーでドメイン別にリスト表示できることから「Site + Memory」という意味でつけられた。
  • Button Builder でボタンを作成。By HTML element ID や By DOM element でクリップ範囲を指定できる。

Evernoteサイトメモリー自体は思うところがあってまだ導入してみていなかったんだけれど、話を聞くことでサイトオーナーにもメリットがあることは感じられた。

Web Service API

OAuth も対応しているんだ。 また API を使えば Linux 版クライアントを作れる人は作れるんだな。

途中で Twitter ハッシュタグ指定が。 この時点で #EvernoteJP よりも多く Tweet れている #Evernote を推奨とのこと。

  • Apache Thrift framework を使用。
  • Evernote Markup Language (ENML)
    • en-note
    • en-crypt
    • en-todo
    • en-media

ENML については以前ドキュメントを読んだことがあるので流して聞く。

  • Evernote Bridge for iOS
  • Evernote for Android
    • intents
      • Future releases will feature additional intents for searching and displaying.

Android はやはり intent が強力だね。 今後新しい intent 対応があるとのこと。楽しみ。 個人的にははやくオフライン閲覧ができるようになってくれると嬉しい(すこし前のアップデートで準備段階としてキャッシュ機能が入ったのでもうすぐらしいんだけれど)。

Q & A
  • Q. ActionScript 3.0 からの API 利用は?
    • A. 今は準備していない。
  • Q. API でポカした場合どうなるのか?
    • A. 今までひどい開発者/ソフトウェアは出ていないが最悪ノート消去や・意図しないデータアップロードが考えられる。
    • A. 負荷が高ければ API key を revoke することも。
    • A. 実装したい機能仕様にあわせて権限を限定したキーを発行することも。
    • Q. モバイルからの印刷機能を提供する予定はあるか?
      • iOS 4.2 は OS の機能として。
    • Q. ENML の validating service はあるか?
      • A. サーバサイドで DTD ベースのバリデーションがかかる。
    • Q. サンドボックス環境は?
      • A. ある。
    • Q. サードパーティのものを Evernote クラインアト左下の広告エリアで紹介するようなとはあるか?
      • A. そのエリアには有料広告 または Evernote として面白いものを。
      • A. まずは Trunk へ。Evernote では Trunk を商売の場としては考えていない。
    • Q. サードパーティーがユーザからの課金する仕組みはあるか?
      • iPhoneAndroid 向けアプリはそちらのマーケットで。デスクトップ向けはない。
    • Q. 従量課金のための仕組みは?
      • A. 今のところない。使えるとしたらアップロードデータ量のカウントぐらい。
    • Q. アフィリエイトのトラッキングは動いているの? レポートは?
      • 1カ月周期でメールで。参照された総数と。$10 支払い発生したユーザ数。
      • API 使用量などの統計データは一部とっている。メールで相談を。
メディアプローブ株式会社 渡辺泰氏

デベロッパーズミーティングということで、ぜひ開発者の声をということで今朝プレゼンテーションを頼まれたとのこと。

初代 MacBook Air 用ディプレイ接続のアダプタを忘れたが、会場参加者にもっている人が貸してくれて無事プレゼンテーション。やはり Mac 率高い。

開発している iPhone RSS リーダに求められた「ニュース保存」に対応するために

  1. Twitter
  2. Evernote

と対応していった。EvernoteAPI 対応は1〜2日程度+テスト。工数少なく機能実装できたとのこと。メール送信によるノート新規追加を連携としているものが多いが、API 利用することでノート表示などもサポートできるという利点があるなど。

デジタルハリウッド大学教授/データセクション株式会社 橋本大也氏

Evernoteなう」

  • Blog記事解析による Evernote の動向(記事数・共起語の変化・ポジティブ/ネガティブ語)
  • 先日情報考学にEvernoteサイトメモリーボタンを追加。Movable Typoe から Evernote に自動的にノート追加してくれるといいな。
  • Evernote の image recognition では認識した文字列の候補を複数もつことで再現率を上げている。
  • Evernote に送る」それとも「Evernote に保存する」?
    • Evernote としては「クリップする」が一押し。
  • レシートを取り込みたい。
  • Evernote では直接音声認識はないけど、Evernote に追加した録音音声からテキスト化してノートにしてくれる外部サービスはある。
  • GTD については?
  • Dropbox との連携は?
    • 「ぶっちゃけみんな Dropbox ユーザ」
[ 10月1日全て ]

2010年10月15日 (金)

今日のさえずり: 「We はーと blog」シールをさっそく貼っといた

image:/nDiki/Flickr/5085927367.jpg

[ 10月15日全て ]

2010年10月17日 (日)

今日のさえずり: 初鍋

2010年10月17日

rimage:/nDiki/Flickr/5092298374.jpg

  • 12:15Edyでゴールドポイント」が11月1日から始まるのか。スマートフォンにして以来 Edy を使わなくなっていたんだけれど、また使うかな。
  • 14:41 @yaizawa IS03、それって au なのよねぇ。
  • 14:50 @overlast こちらこそ勉強させていただきありがとうございました。「できるだけ自前で」について共感いたしました。過去にベクトル系の文書検索を研究・開発しておりましたが、データの準備とその知的財産権関係には頭を悩ませました。
  • 18:04 業務用デジタルカメラ -> 六切プリント -> PIXUS でスキャン -> GIMP で補正・切り取り -> PIXUS -> L判プリント
  • 18:54 初鍋。 http://movapic.com/...
  • 22:15 HootSuite for Android には twicca に無い機能としてリストの更新通知があるので ping というプライベートリストを作って通知させるように設定してみた。
  • 22:24 これで「リストの statuses.atom」-> 「OAuth 認証して取ってきて再度出力する CGI プログラム」-> Google リーダー -> Plagger -> Gmail を1つ止められるかな。
[ 10月17日全て ]

2010年10月26日 (火)

Twitter の投稿通知のために Growl for Windows を入れてみた

後ろの人が今日からオンサイト作業。 iPhone を持っているので何かあった時は電話Google AppsGmail でやりとりはできるのだが、仕事中、場合によっては数時間メールチェックをしないことがある(自分)ので、通知システムを入れてみることにした。 あとオフィス待機側として、オンサイト側の着現・撤収を知りたいのでついでに Twitter の通知もセットで。

入れてみたのは、 YAPC::Asia Tokyo 2010 でもオフにしないままプレゼンテーションしていた人多数の Growl の Windows 版「Growl for Windows」。

Gmail の通知

Gmail Growl を入れてみた。 設定直後は接続できていたんだけれど、そのうち接続できなくなってしまった。

Windows BOX に Gmailパスワードを入力しっぱなしもちょっと気持ち悪いのでやっぱりアンインストール。

Twitter の通知

Trowl を入れてみた。

認証OAuth (PIN 式)。 タイムライン上の tweet の通知について、どのユーザのものを通知するかを選べるのはナイス。ただし設定画面を開くたびに follow 一覧を取ってくるので多いとしんどそう。 リストを指定して tweet 通知させることもできるので、管理的には専用のリストを作るのが便利そうだ。

使い勝手はまずまずかな。

Twitter メインアカウントの認証を設定しっぱなしにしておくのは嫌なので、専用に別 Twitter アカウントを作って設定。Growl 側では New Tweet を Sticky = Always にして見落さないようにしてみた。

検索の通知もできるので、仕事関連のイベント中はこちらでチェックできそう。

[ 10月26日全て ]

2013年6月16日 (日)

Twitter API v1.1 対応とか、パイプでやりとりするの JSON でいいのとか

Twitter API v1.1 に対応していないスクリプトがあって、たしか OAuth 対応はしてあるけど RSS 形式を使っていたので JSON で取得して処理するようにしなければなーと思ってたんだけれど、そもそも OAuth 対応すらしてなかった。

なので Net::Twitter::Lite を使うように書き換え。

あと、いままで1つのスクリプトで「Twitter API を呼び出してタイムライン取得」「シリアライズしてファイルに保存」「Wiki 形式に整形して書き出し」をしていたんだけれど、UNIX 哲学に従って小スクリプトに分割してパイプで受け渡すように変更するなど。

スクリプト間のやりとりは構造化テキストデータなので JSON にしたんだけれど、若干これでいいのかなぁ感はある。テキスト形式だし最近の主流フォーマットではあるんだけれど、それでもシェルから見ると複雑な形式な気がするんだよね。でもあと軽量な構造化テキストフォーマットだと YAML ぐらいかなぁ。

[ 6月16日全て ]

2014年9月16日 (火)

社内でも動かしている PSGI アプリケーションに OpenID 認証をつけた

Plack::App::Directory::Markdown をベースにちょっと手を入れた Markdown ビューアを使っている(記事)んだけれど、閲覧要認証なシチュエーションが出てきた。

自分のみ閲覧のものは builder で Plack::Middleware::Auth::Digest を enable にして Digest 認証をかけ、htdigest コマンドでパスワード管理とかで済ませているのだけれど、複数人に閲覧してもらうのにこれは嫌だ。人のパスワード管理はしたくない。

OAuthGoogle アカウントとかの認証を使うというのもあるけれどキーとか面倒くさいので、せっかくだし mixi OpenID を使うことにした。Perl モジュールは Net::OpenID::Consumer::Lite を使用。

とりあえずやっつけで以下のような感じ。いきなり mixi OpenID 認証させるしエラー・キャンセル処理もほとんどないし、call の中にネジこんだりしてあるので、まだまだダメダメだけれどとりあえず認証はできた。後で整理する。

セッションを使うようにしておく

 $app = builder {
   enable 'Session', store => 'File';
   $app;
 };

call の先頭に以下を追加。

 my $session = $env->{'psgix.session'};
 my $request = Plack::Request->new($env);

 unless ($session->{openid}) {
   unless ($request->parameters->{'openid.mode'}) {
     my $check_url
       = Net::OpenID::Consumer::Lite->check_url(
       'https://mixi.jp/openid_server.pl',
       $request->uri);
     return [302, ['Location' => $check_url], []];
   }

   return Net::OpenID::Consumer::Lite->handle_server_response(
     $request->parameters => (
       not_openid => sub {
         return [503, [], []];
       },
       setup_required => sub {
         my $setup_url = shift;
         return [302, ['Location' => $setup_url], []];
       },
       cancelled => sub {
         return [403, [], []];
       },
       verified => sub {
         my $vident   = shift;
         my $identity = $vident->{identity};

         # %member に閲覧 OK の OpenID を入れてある。
         if (exists $member{$identity}) {
           $session->{openid} = $identity;
           return [302, ['Location' => $vident->{return_to}], []];
         }
         else {
           return [403, [], []];
         }
       },
       error => sub {
         my $err = shift;
         return [503, [], []];
       },
     )
   );
 }

 # 以下は認証済みの場合の処理を書く。

[ Naney と mixi ]

[ 9月16日全て ]

2015年9月8日 (火)

Markdown ビューアを OpenID Connect を使って Google アカウント認証できるようにした

社内で動かしている Markdown ビューアについては去年 mixi Open ID 認証にしました(記事)。ですが mixi OpenID については 2016年1月25日提供終了となっていますので今回認証を変更しました。

今回は Google アカウント認証できるように OpenID Connect を使ってみることに。基本的には OAuth 2.0 とほぼ同じです。

認証ページ(https://accounts.google.com/o/oauth2/auth)にリダイレクトさせる時に scope パラメータに 'openid email' を指定しておきます。

そしてコールバックを受けて https://accounts.google.com/o/oauth2/token でアクセストークンを取得した際に、レスポンスに一緒に含まれる id_token をパースして email 取り出します。今回はそのメールアドレスが指定ドメインだったらアクセスを許可するという処理にしました。

JSON Web Token (JWT) である id_token のパースには OIDC::Lite::Model::IDToken モジュールを使用。

 $email = OIDC::Lite::Model::IDToken->load($id_token)
    ->payload->{email};

で email が取得できます。

[ 9月8日全て ]

2015年12月11日 (金)

Slack Web API で分報を送信

一昨日からSlack 分報をやりはじめましたAndroid スマートフォンからさくっとつぶやくには Slack アプリはちょっと不便(立ち上がってからチャネル選択する必要がある)なので Slack Web API でさくっと投稿できるようにしておきます。

Slack Web API

投稿は Slack の incoming webhook でもできるのですが、これで送ると BOT とついてしまうので Slack Web API を使うことにします。認証承認OAuth 2 が推奨ですが、まずはシンプルに API トークンを使う方法にしておきます。

の [Create token] でトークンを発行します。

発行できたらあとは

 https://slack.com/api/chat.postMessage?token=<トークン>&channel=%23times_naney&as_user=true&parse=full&text=Hello.

のように chat.postMessage を呼び出せば投稿できます。

サポテキ

あとはサポテキ (SupportText Pro) のユーザー定義ボタンで

 [TITLE]
 #times_naney
 [TEXT]
 https://slack.com/api/chat.postMessage?token=<トークン>&channel=%23times_naney&as_user=true&parse=full&text=%s
 [TYPE]
 URI
 [CCODE]
 UTF-8
 [END]

としておけばボタン一発投稿できるようになります。

実行すると Web ブラウザが開いて API レスポンスが表示されるだけのシンプルな設定なので、あとはよしなに工夫していけば良い感じです。

[ 12月11日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.024886s / load averages: 0.32, 0.26, 0.33