2012年6月24日日曜日

android:Facebook Android SDK(3:友人一覧を取得)

Facebook Android SDKを使用してGraph APIにアクセスすると、Facebook上の友人一覧を取得することができる。
友人一覧以外にも、投稿内容やアルバムの取得にもGraph APIを使用する。

  • Graph APIへのアクセスにはAsyncFacebookRunnerクラスのrequestメソッドを使用する。
  • 友人情報を取得するためのリクエストは「me/friends」。
  • requestメソッドの応答はJSON形式となる。

認証については、こちらも参照のこと。

package net.kuttya.facebooksample;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.AsyncFacebookRunner.RequestListener;
import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.FacebookError;

public class FacebookSdkSampleActivity extends Activity {
    private final String API_KEY = "登録したAPP ID"; // Facebookに登録したAppID

 private Facebook facebook;
 private AsyncFacebookRunner runner;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    // ログインボタン押下処理
    public void clickEventLogin(View v) {
        // 認証実施
     if(facebook == null) {
      facebook = new Facebook(API_KEY);
     }
        facebook.authorize(this, new DialogListener() {

            public void onComplete(Bundle values) {
             // 認証成功

          runner = new AsyncFacebookRunner(facebook);

          // 「me/friends」とリクエストすることで、友人情報を取得する
          runner.request("me", new RequestListener(){

     public void onComplete(String response, Object state) {
      // リクエスト成功
      // responseを処理する
      // responseはJSON形式となっている
     }

     public void onIOException(IOException e, Object state) {
      // ネットワークエラー
               Toast.makeText(FacebookSdkSampleActivity.this, "リクエスト失敗\n(ネットワークエラー)", Toast.LENGTH_SHORT).show();
     }

     public void onFileNotFoundException(FileNotFoundException e, Object state) {
      // 存在しないリソースへのアクセスが発生
               Toast.makeText(FacebookSdkSampleActivity.this, "リクエスト失敗\n(存在しないリソースへのアクセスが発生)", Toast.LENGTH_SHORT).show();
     }

     public void onMalformedURLException(MalformedURLException e, Object state) {
      // リクエストが無効
               Toast.makeText(FacebookSdkSampleActivity.this, "リクエスト失敗\n(リクエストが無効)", Toast.LENGTH_SHORT).show();
     }

     public void onFacebookError(FacebookError e, Object state) {
      // Facebook側でのエラー
               Toast.makeText(FacebookSdkSampleActivity.this, "リクエスト失敗\n(Facebook側エラー)", Toast.LENGTH_SHORT).show();
     }
          });
            }

            public void onFacebookError(FacebookError e) {
             // Facebook側エラー
             Toast.makeText(FacebookSdkSampleActivity.this, "ログイン失敗\n(Facebook側エラー)", Toast.LENGTH_SHORT).show();
            }

            public void onError(DialogError e) {
             // 端末側エラー
             Toast.makeText(FacebookSdkSampleActivity.this, "ログイン失敗\n(端末側エラー)", Toast.LENGTH_SHORT).show();
            }

            public void onCancel() {
             // キャンセル
             Toast.makeText(FacebookSdkSampleActivity.this, "ログイン失敗\n(キャンセル)", Toast.LENGTH_SHORT).show();
            }

        });
    }

    // ログアウトボタン押下処理
    public void clickEventLogout(View v) {
     try {
      if(facebook != null) {
    facebook.logout(this);

    facebook = null;

          // ログアウト成功
          Toast.makeText(FacebookSdkSampleActivity.this, "ログアウト成功", Toast.LENGTH_SHORT).show();
      }
  } catch (MalformedURLException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }

    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);

     facebook.authorizeCallback(requestCode, resultCode, data);
    }
}

マニフェストファイルに下記のパーミッションを追加する。


レイアウトとして、main.xmlにログイン用ボタン、ログアウト用ボタンを設置する。 ボタン押下で、クリックイベントを発生させる。

    

にほんブログ村 IT技術ブログ Androidアプリ開発へ

2012年6月12日火曜日

android:Facebook Android SDK(2:ログインとログアウト)

Facebook Android SDKを使用して、ログインとログアウトするサンプルを示す。

認証については、こちらも参照のこと。

package net.kuttya.facebooksample;

import java.io.IOException;
import java.net.MalformedURLException;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.FacebookError;

public class FacebookSdkSampleActivity extends Activity {
    private final String API_KEY = "登録したAppID"; // Facebookに登録したAppID

 private Facebook facebook;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    // ログインボタン押下処理
    public void clickEventLogin(View v) {
        // 認証実施
     if(facebook == null) {
      facebook = new Facebook(API_KEY);
     }
        facebook.authorize(this, new DialogListener() {

            public void onComplete(Bundle values) {
             // 認証成功
             Toast.makeText(FacebookSdkSampleActivity.this, "ログイン成功", Toast.LENGTH_SHORT).show();
            }

            public void onFacebookError(FacebookError e) {
             // Facebook側エラー
             Toast.makeText(FacebookSdkSampleActivity.this, "ログイン失敗\n(Facebook側エラー)", Toast.LENGTH_SHORT).show();
            }

            public void onError(DialogError e) {
             // 端末側エラー
             Toast.makeText(FacebookSdkSampleActivity.this, "ログイン失敗\n(端末側エラー)", Toast.LENGTH_SHORT).show();
            }

            public void onCancel() {
             // キャンセル
             Toast.makeText(FacebookSdkSampleActivity.this, "ログイン失敗\n(キャンセル)", Toast.LENGTH_SHORT).show();
            }

        });
    }

    // ログアウトボタン押下処理
    public void clickEventLogout(View v) {
     try {
      if(facebook != null) {
    facebook.logout(this);

    facebook = null;

          // ログアウト成功
          Toast.makeText(FacebookSdkSampleActivity.this, "ログアウト成功", Toast.LENGTH_SHORT).show();
      }
  } catch (MalformedURLException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }

    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);

     facebook.authorizeCallback(requestCode, resultCode, data);
    }
}

マニフェストファイルに下記のパーミッションを追加する。


レイアウトとして、main.xmlにログイン用ボタン、ログアウト用ボタンを設置する。 ボタン押下で、クリックイベントを発生させる。

    

にほんブログ村 IT技術ブログ Androidアプリ開発へ

2012年6月2日土曜日

android:Facebook Android SDK(1:アプリに組み込む)

AndroidアプリからFacebookの機能を使用するための方法として、Facebook Android SDKを使用する方法がある。

手順は以下。
  • Facebook Android SDKの入手
  • Facebook Developersに登録
  • Facebookにアプリ登録
  • アプリ作成

ここでは、Facebookにアプリ登録を済ませていることを前提とする。

プロジェクト作成

新規にプロジェクトを作成した後、Facebook Android SDKをプロジェクトに取り込む。
ダウンロードしたFacebook Android SDK内のfacebook/src、facebook/resを、作成したプロジェクトのフォルダにコピーする。

facebook_android_sdk
└facebook
├res
└src

取り込んだソースファイルのうち、FbDialog.javaにてコンパイルエラーが発生するが、リソースを作成したプロジェクトのパッケージに修正すると解消される。
Drawable crossDrawable = getContext().getResources().getDrawable(R.drawable.close);

下記のように修正する。
Drawable crossDrawable = getContext().getResources().getDrawable(net.kuttya.facebooksample.R.drawable.close);

認証画面呼び出し

作成したプロジェクトのアクティビティにて認証画面を呼び出す。

package net.kuttya.facebooksample;

import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.FacebookError;
import com.facebook.android.Facebook.DialogListener;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class FacebookSdkSampleActivity extends Activity {
    private final String API_KEY = "登録したAppID"; // Facebookに登録したAppID

 Facebook facebook = new Facebook(API_KEY);
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // 認証実施
        facebook.authorize(this, new DialogListener() {

            public void onComplete(Bundle values) {
             // ログイン完了
            }

            public void onFacebookError(FacebookError e) {
             // Facebook側エラー
            }

            public void onError(DialogError e) {
             // 端末側エラー
            }

            public void onCancel() {
             // キャンセル
            }

        });
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);

     facebook.authorizeCallback(requestCode, resultCode, data);
    }
}

Facebookへ接続するため、INTERNETのパーミッションを追加する。



    
    

    
        
            
                

                
            
        
    




アプリを起動すると、Facebookのアプリ認証画面を表示する。




にほんブログ村 IT技術ブログ Androidアプリ開発へ