DotNetOpenAuthをFacebookでうまいこと使う

Preview:

Citation preview

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(一本審査中)

Visual Studio 2012 で ASP.NET MVC4プロジェクトを開始すると、入っているライブラリ(インターネットプロジェクト)

MicrosoftがオープンソースライブラリとしてThe OuterCurve Foundationに寄贈

OAuth認可を実現する

OAuth?認可?なにそれ?おいしい?

ウェブサービスで操作可能なパーミッションの取得・許可方法を定めたプロトコル

基本的にブラウザベースFacebookの情報を

使って、楽しいサービスを提供するよ!

個人情報の山

うーん?何を利用するのかな…

Facebookの友達リストが必要URL

Facebookの友達リストが必要

ABCっていうサイトが、友達リスト見たいらしいけど、許可し

て大丈夫?

Facebookにログイン

アクセストークン

URL アクセストークン

このアクセストークンがあれば、友達リストを取得出来る

アクセストークン

OK!

しかも、Microsoftアカウント・Googleアカウント・twitterアカウントも面倒見れます

その他のOAuth対応サイトにも、最小のコード追加で対応可能

DotNetOpenAuthって凄い! ヽ(^o^)丿

実際にはASP.NETのOAuthWebSecurityクラス

が仲介します

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)に乗せられて、我がサイトに到達する。

個人情報の山アクセストークン

URL アクセストークン

ここまでは、DotNetOpenAuthで処理させて…

アクセストークンをSDKに渡す

以降はFacebook

C# SDKで。

ブラウザがキックしてきたURL(アクセストークン入り)を、OAuthWebSecurity.VerifyAuthentication()に渡して解析させる

解析した結果の、AuthenticationResult.ExtraData.Keysコレクションに、”accesstoken”が含まれているかどうかをチェックして取り出す

FacebookClient.AccessTokenに、先の処理で取得したアクセストークン文字列をセット

後はご自由に!

使用上のご注意:不正アクセスを助長するものではありません

ていうか出来ない

Using OAuth Providers with MVC 4 By Tom FitzMacken

http://www.asp.net/mvc/tutorials/security/using-oauth-providers-with-mvc

WPはどこに行ったんだよ!!

認可サーバへのログインと承認のプロセスは、ブラウザを使用しなければならない

WebBrowserコントロールを使用して、Navigatingで最終遷移をトラップ

個人情報の山

Facebookの友達リストが必要

WebBrowser

コントロール

アクセストークン

ご静聴ありがとうございました m(_ _)m