omniauth strategies the phantom pain

24
@yimajo THE PHANTOM PAIN OmniAuth Strategies

Upload: -

Post on 21-Feb-2017

452 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: OmniAuth Strategies The Phantom Pain

@yimajo

THE PHANTOM PAINOmniAuth Strategies

Page 2: OmniAuth Strategies The Phantom Pain

https://stargzr.net

自己紹介

一人で株式会社キュリオシティソフトウェアをやっています

今城 善矩

Page 3: OmniAuth Strategies The Phantom Pain

https://stargzr.net

StargazerというWebサービスをRailsで つくっています

GitHub, Qiita, SlideShare, Stack Overflowの ★数的なものを全部 合計します

Page 4: OmniAuth Strategies The Phantom Pain

https://stargzr.net

インタビューされてもいいよという人/組織を 探しています

インタビューの数字(2015.9.27現在)

• Pocketの後で見る数 255

• ツイート数 210

• はてぶ数 147

• Facebookいいね!数 290

Page 5: OmniAuth Strategies The Phantom Pain

人が欲しいと思うものを作れ

Page 6: OmniAuth Strategies The Phantom Pain

https://stargzr.net

今週 Stargazerは Stack Overflowと

日本語版Stack Overflowの スコアも対応しました

\(^o^)/

Page 7: OmniAuth Strategies The Phantom Pain

https://stargzr.net

スコアってどうやって取得してんの?

Page 8: OmniAuth Strategies The Phantom Pain

https://stargzr.net

• OAuthを使っているサービスを利用してidと必要であればaccess_tokenを取得

• 各サービスのAPIを呼び出して★的なものを取得

Page 9: OmniAuth Strategies The Phantom Pain

https://stargzr.net

OmniAuthというOAuthを抽象化してくれるgemが 超絶便利!!!!

Page 10: OmniAuth Strategies The Phantom Pain

https://stargzr.net

各サービス(provider)ごとの違いはStrategyパターンでそれぞれのgemによって吸収される

Page 11: OmniAuth Strategies The Phantom Pain

https://stargzr.net

Strategyに対応したgemの作り方は 細かくドキュメント化されていないの

に登録されているものだけで 200個ぐらいある!!!

https://github.com/intridea/omniauth/wiki/List-of-Strategies

Page 12: OmniAuth Strategies The Phantom Pain

https://stargzr.net

当然Stack Overflowもomniauth-stackexchangeというgemがあっので使ってみた!!!

Page 13: OmniAuth Strategies The Phantom Pain

_人人人人人人人_ > 突然の死 < ‾Y^Y^Y^Y^Y^Y‾

Page 14: OmniAuth Strategies The Phantom Pain

https://stargzr.net

なぜエラー?• Stack OverflowはStack Exchangeアカウントが親になっている

• 例えばStack Overflowアカウントを使っていても、日本語版Stack Overflowアカウントは有効化していなければ例外が起きてた

Stack Exchange

日本語版 Stack Overflow

Stack Overflow

有効化無効化

例外

Page 15: OmniAuth Strategies The Phantom Pain

https://stargzr.net

安心して下さい

Page 16: OmniAuth Strategies The Phantom Pain

https://stargzr.net

Pull Request出してマージ済みです

\(^o^)/

Page 17: OmniAuth Strategies The Phantom Pain

https://stargzr.net

ドキュメントがあんまり詳細じゃないのに200個もStrategy gemsがあると中には適切な実装じゃないgemもある!

Page 18: OmniAuth Strategies The Phantom Pain

https://stargzr.net

どういう対処が適切か

Page 19: OmniAuth Strategies The Phantom Pain

認可画面表示

client_id scope

redirect_uri state

ID/PW

認可コード発行認可コード

access_token要求

認可コード client_id

client_secret redirect_uri

access_token access_token 発行

連携リンクを クリック

ID/PW入力

Page 20: OmniAuth Strategies The Phantom Pain

https://stargzr.net

OmniAuthのStrategy作るとき• プロバイダのToken URLなどを仕込む

• Request PhaseとCallback Phaseを設定

• レスポンスのJSONはプロバイダ毎に違うのでそれ用に処理

https://github.com/intridea/omniauth/wiki/Strategy-Contribution-Guide

Page 21: OmniAuth Strategies The Phantom Pain

https://stargzr.net

OmniAuthのStrategy作るときの 注意点まとめ

• callback_phaseの例外はStandardErrorならrescueされる

• 独自の例外作る場合callback_phaseをoverrideして独自の例外をrescueしてfail!メソッドを呼ぶ

Page 22: OmniAuth Strategies The Phantom Pain

https://stargzr.net

具体例

def callback_phase super rescue NotRegisteredForStackExchangeSiteError => e fail!(:user_is_not_registered, e) end

Page 23: OmniAuth Strategies The Phantom Pain

宣伝最近、iOSアプリ開発の技術メンター業務をしています

• Swift/Objective-Cのコードレビューをします

• 設計についてアドバイスします(GitHubやSkype)

Page 24: OmniAuth Strategies The Phantom Pain

クライアントの声を紹介http://curiosity.co.jp/trenders/

こちらからは以上です\(^o^)/