150 likes | 246 Views
DotNetOpenAuth を Facebook で うまいこと使う. < ウマーー. In まどべん よっかいち 2013/07/27 @kekyo2. 自己紹介. けきょ、 とか。 ロードバイクで走ってます。 会社やってます。 主に Windows 。 C#, C++/CLI, ATL, C++0x, x86/x64 アセンブラ , WDM, Azure, TFS, OpenCV , Geo, JNI, 鯖管理 , MCP 少々 , 自作 PC, 昔マイコン , 複式簿記経理 ww NOKIA Lumia 710 (一本審査中).
E N D
DotNetOpenAuthをFacebookでうまいこと使う < ウマーー In まどべんよっかいち 2013/07/27 @kekyo2
自己紹介 • けきょ、とか。 • ロードバイクで走ってます。 • 会社やってます。 • 主にWindows。C#, C++/CLI, ATL, C++0x, x86/x64アセンブラ, WDM, Azure, TFS, OpenCV, Geo, JNI, 鯖管理, MCP少々, 自作PC, 昔マイコン, 複式簿記経理ww • NOKIA Lumia 710(一本審査中)
DotNetOpenAuthってなに? • Visual Studio 2012 で ASP.NET MVC4プロジェクトを開始すると、入っているライブラリ(インターネットプロジェクト) • MicrosoftがオープンソースライブラリとしてThe OuterCurve Foundationに寄贈 • OAuth認可を実現する OAuth?認可?なにそれ?おいしい?
What’s OAuth? How OAuth? • ウェブサービスで操作可能なパーミッションの取得・許可方法を定めたプロトコル • 基本的にブラウザベース このアクセストークンがあれば、友達リストを取得出来る Facebookの情報を使って、楽しいサービスを提供するよ! Facebookにログイン ABCっていうサイトが、友達リスト見たいらしいけど、許可して大丈夫? アクセストークン URL URL Facebookの友達リストが必要 アクセストークン URL URL OK! ブラウザ Facebookの友達リストが必要 うーん?何を利用するのかな… アクセストークン 個人情報の山
雑多なやり取りを半ば自動でやってくれる • しかも、Microsoftアカウント・Googleアカウント・twitterアカウントも面倒見れます • その他のOAuth対応サイトにも、最小のコード追加で対応可能 実際にはASP.NETのOAuthWebSecurityクラスが仲介します DotNetOpenAuthって凄い! ヽ(^o^)丿
ところで。 • Facebook C# SDKを知っていますか?
Facebook C# SDK • NuGetで導入可能なライブラリPM> Install-Package Facebook • オフィシャル?ということになっている(ホントかなぁ、Facebook Developerには記述ないんだけど) • Facebookへのログイン処理 • Graph APIでクエリ実行・記事/写真の投稿 え? おぉ、Facebookだけなら、こっちの方がいいじゃん?
ログイン処理をどうするか? • DotNetOpenAuthもFacebook C# SDKもログイン処理を行えるワ • どちらか一方でしか使えナイの? • 今はFacebookダケだけど、将来的にはtwitterやGoogleアカウントにも対応したいワ。だからDotNetOpenAuthに統一シテ。 Facebookへのクエリも当然やりたい。まさか、アナタ、ドロ臭いコードをワタシに書かせるワケ?!
ポイントは、アクセストークン。 • OAuthの最終段階で、Facebookの認可サーバーは、「アクセストークン」なる文字列を返す • このトークンはブラウザのURL(QueryString)に乗せられて、我がサイトに到達する。 ここまでは、DotNetOpenAuthで処理させて… 以降はFacebook C# SDKで。 アクセストークンを SDKに渡す URL アクセストークン URL アクセストークン 個人情報の山
アクセストークンを取り出す(DotNetOpenAuth) • ブラウザがキックしてきたURL(アクセストークン入り)を、OAuthWebSecurity.VerifyAuthentication()に渡して解析させる • 解析した結果の、AuthenticationResult.ExtraData.Keysコレクションに、”accesstoken”が含まれているかどうかをチェックして取り出す
アクセストークンを使う(Facebook C# SDK) • FacebookClient.AccessTokenに、先の処理で取得したアクセストークン文字列をセット • 後はご自由に! ていうか 出来ない 使用上のご注意: 不正アクセスを助長するものではありません
以下の記事が元ネタ • Using OAuth Providers with MVC 4 By Tom FitzMackenhttp://www.asp.net/mvc/tutorials/security/using-oauth-providers-with-mvc
アプリでOAuthする場合 • 認可サーバへのログインと承認のプロセスは、ブラウザを使用しなければならない • WebBrowserコントロールを使用して、Navigatingで最終遷移をトラップ WebBrowser コントロール Facebookの友達リストが必要 URL URL アプリから直接アクセス アクセストークン 個人情報の山
完 ご静聴ありがとうございました m(_ _)m