2011年3月12日土曜日

Facebook Android SDK を使ってみる

Facebook Android SDK とは

Android アプリから Facebook の機能(認証、Graph API、プラットフォームダイアログなど)を使うためのライブラリです。

Facebook DevelopersMobile Apps のところに説明があります。ここの情報に従って進めていきます。

Facebook Android SDK の入手

Facebook Android SDK は github で公開されています。

git でソースをダウンロードします。

$ git clone git://github.com/facebook/facebook-android-sdk.git

facebook-android-sdk というディレクトリができます。 ちなみに git を使わなくても、 github のページからダウンロード可能です。

eclipse にプロジェクトを追加

eclipse で、先ほど入手したライブラリからにプロジェクトを作ります。

  • [File] => [New] => [Android Project]
  • [Create project from existing source] にチェック
  • パスは先程入手した facebook-android-sdk の下の facebook

これで eclipse から Facebook Android SDK が使用可能になりました。

Facebook Android SDK を使ったアプリの作成

早速、 Facebook Android SDK を使ったアプリを作ってみます。

まずは新規のプロジェクトを作成します。

使用するライブラリに Facebook Android SDK を加えます。

  • プロジェクトの [Properties] を開き、左のリストから [Android] を選びます。
  • Library の [Add] ボタンを押して、 最初に作成した Facebook Android SDK のプロジェクトを指定する。

Facebook を使うからには通信を行うので、 uses-permission に INTERNET を追加します。

  • AndroidManifest.xml を開く
  • [Permissions] タブをクリック
  • [Add] ボタンをクリック
  • [Uses Permission] 選択して OK をクリック
  • 右側の [Name] ドロップダウンから [INTERNET] を選択

これで Facebook Android SDK を使ったアプリの原型ができました。

Facebook 側での準備

Facebook 側にも準備が必要です。

  • Developer App を開き、 [Set Up New App] ボタンをクリック
  • 好きなアプリケーション名を入力して、 [Create App] をクリック

名前に Facebook とかが入ってるとダメみたいなので注意

  • 左側のリストから [Mobile and Devices] をクリックし、 Key Hash を入力します。

Eclipse ではビルドするとデフォルトでデバッグ用のキーで署名されるので、ここではデバッグ用のキーから Key Hash を作ります。

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

パスワードは android です。

これで準備が整いました。

コードを追加する

ではコードを追加してみます。

Facebook Developer のサンプルコードを少し変更してビルドします。

 1:  package com.myfirstfacebookapp;
 2:  
 3:  import android.app.Activity;
 4:  import android.content.Intent;
 5:  import android.os.Bundle;
 6:  
 7:  import com.facebook.android.DialogError;
 8:  import com.facebook.android.Facebook;
 9:  import com.facebook.android.Facebook.DialogListener;
10:  import com.facebook.android.FacebookError;
11:  
12:  public class MyFirstFacebookApp extends Activity {
13:      // 引数は Facebook から取得した App ID
14:      Facebook facebook = new Facebook("135741723160602");
15:  
16:      /** Called when the activity is first created. */
17:      @Override
18:      public void onCreate(Bundle savedInstanceState) {
19:          super.onCreate(savedInstanceState);
20:          setContentView(R.layout.main);
21:  
22:          facebook.authorize(this, new DialogListener() {
23:              @Override
24:              public void onComplete(Bundle values) {}
25:  
26:              @Override
27:              public void onFacebookError(FacebookError error) {}
28:  
29:              @Override
30:              public void onError(DialogError e) {}
31:  
32:              @Override
33:              public void onCancel() {}
34:          });
35:      }
36:  
37:      @Override
38:      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
39:          super.onActivityResult(requestCode, resultCode, data);
40:  
41:          facebook.authorizeCallback(requestCode, resultCode, data);
42:      }

14 行の App ID は Developer App から確認できます。

起動したら認証を行うだけのアプリですね。

実行してみる

では実機で試してみます。

起動すると、ログイン画面が現われました。

アプリにアクセスを許可するか聞かれます。

まだ認証しかしていませんが、まずは意図通り動いているようです。 次は Graph API を使ってみたいと思います。

追記

Facebook Android SDK の認証機能は Facebook for Android (Facebook 公式の Android アプリ) の機能を使っているようです。 このアプリがサインオン状態を覚えておく事で Android でのシングルサインオンを実現しているのでしょうか。 なので、アプリを入れていないと挙動が変わります。

  • 画面が違う
  • 毎回ログインを求められる

0 件のコメント:

コメントを投稿