SIN@SAPPOROWORKSの覚書

C#を中心に、夜な夜な試行錯誤したコードの記録です。

Facebookアプリの作成(C#+Windows Azure) その2

Facebookアプリの作成(C#+Windows Azure) その1では、Facebookアプリをローカルでデバッグするところまで作成しましたが、今回は、ここまでの段階で必要な「認識」や、「陥りやすい問題」について紹介します。

1 アプリをFacebookに結合する方法

(1) 6つのタイプとその選択方法

Facebookアプリは、その結合形態から次の6つのタイプがあります。
最初に、自分が今から開発するアプリケーションが、どのタイプなのかを明確にしておく必要があります。

(a) Facebook上のアプリ
Facebook.com内で動作するWebアプリです。

(b) Facebookでログインが可能なウエブサイト
(c) モバイルWebアプリ
Facebook.com以外で動作するWebアプリです。

(d) ネイティブiOSアプリ
(e) ネイティブAndroidアプリ
デバイス上で動作するクライアントアプリです。

(f) ページタブ
Facebook.com内で動作するWebアプリです。Facebookページ(ファンページ)のカスタムタブとして動作します。

上記のうちどのタイプを選択するかは、「基本設定」の「アプリをFacebookに結合する方法を選択」で、どのタイプの設定するかによって決定されます。

今回、作成に挑戦しているのは、(a)の「Facebook上のアプリ」です。

(2) 結合の形態

Facebook上のアプリ」の結合形態は図のようになっています。

Facebook.comドメインの指定されたURLをリクエストすると、Facebookの通常のページを描画する際に、その一部としてiFrameで独自作成のWebページを取り込みます。

Facebookでは、現在、このiFrameに表示するページが、SSL(https://)でアクセスクセス)できることを必須デバッグ時は例外[後述])としています。

2 認証

(1) Facebook SDK for.NET による認証

Facebook APIを使用するためには、「アクセストークン」が必要になります。そして、この「アクセストークン」を取得するためには、Facebookで認証を受けなければなりません。

Facebookの認証は、現在「OAuth 2.0」になっていますが、Webアプリにおいては、リダイレクトなどを含む複数回のやり取りが必要になります。

OAuth2.0の詳しい解説は各所でなされているためここでは省略しますが、今回使用している「Facebook SDK for.NET」では、Default.aspx.csのPage_Load()に記述した下記のコードだけで、その一連の動作が隠ぺいされています。


var auth = new CanvasAuthorizer{Permissions = new[]{"user_about_me"}};
if (auth.Authorize()){
    //認証成功時に、ここに到達するので、ブレークポイントをおいて確認できる
}

auth.Authorize()の下にブレークポイントを置いて、そこに止まれば、認証が成功していると言えます。

(2) 認証に必要な情報

認証の一連のシーケンスでは、下記の4つの文字列が必要になります。
(a) App ID
(b) App Secert
(c) キャンパスページ
(d) キャンパスURL
そして、この文字列は「基本設定」のページで確認できます。

また、この4種類の文字列をFacebook SDK for.NETに与える方法は、Web.configの下記の記述になります。

[csharp highlight="2,3,4,5,6"]
</entityFramework>
<facebookSettings
appId = "12345678"
appSecret = "xxxxxxxxxxxxxxxxxxxxx"
canvasPage = "http://apps.facebook.com/sample_fb_pg"
canvasUrl = "http://localhost:81/" />
</configuration>
|