AndroidStudioでFacebookSDK4.8.2を導入からログインまで


##はじめに
ぶちをと申します。
今回はAndroidStudioでFacebookSDKを導入して、ログイン機能を試すまでをやってみます。

FacebookSDK4.xと3.xとじゃ使われなくなったものや変更点がちらほら見受けられたので、書き残しておこうと思いました。

##環境
AndroidStudio 1.5
FacebookSDK 4.8.2

##導入
AndroidStudioにFacebookSDKを導入します。
予め、Facebookで開発者登録をしてfacebookの方でアプリを登録しておいてください。
>参考
[[Android] Facebook SDKで、ログイン＆ニュースフィードに投稿する](http://dev.classmethod.jp/smartphone/android/android-facebook-sdk_post/)

facebookのSDKを入れるのは凄く簡単で、次のコードをapp/build.gradleに記述するだけです。

1.dependencies{}より前に以下のコードを書く。

```Java:app/build.gradle
repositories {
    mavenCentral()
}
```
2.dependencies内にsdk4.7.0を入れると記載。バージョンはここで変えられます。

```Java:app/build.gradle
dependencies {
	compile 'com.facebook.android:facebook-android-sdk:4.7.0'	//追加
}

```

以上でSDK導入は完了です。

##ログイン
次はログイン機能を試してみましょう。実際に最後サンプルコードをのっけておきますが、必要なところをピックアップして説明します。

1.ログイン機能を使用する際必ず記載します。3.x系だとLoginActivityにあたるものになります。4.xからはFacebookActivityに変わります。そのままLoginActivityと書いているとエラーになってしまいますので、注意してください。

```xml:AndroidManifest.xml
<activity android:name="com.facebook.FacebookActivity"
          android:configChanges=
                 "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
          android:theme="@android:style/Theme.Translucent.NoTitleBar"
          android:label="@string/app_name" />
```

2.ログイン機能を使う際のサンプル（一部抜粋）

```Java:LoginActivity.java
	private CallbackManager callbackManager;
	
	@Override
    protected void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       
       final MainActivity activity = this;
       /*-- facebook SDK --*/
       Button btnFacebook = (Button) findViewById(R.id.login_btnFacebook);
        btnFacebook.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            	//1.onClick内にログインのパーミッションを設定(LoginButtonを使用しない場合)
              	LoginManager.getInstance().logInWithReadPermissions(activity, Arrays.asList("public_profile", "email"));	//profileとemailの情報を取得
            }
        });
        
       	//2.facebook利用する時のInitialize
		FacebookSdk.sdkInitialize(this);
		
		//3.コールバック登録
        callbackManager = CallbackManager.Factory.create();

        LoginManager.getInstance().registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        //3.1 ログイン成功
                    }

                    @Override
                    public void onCancel() {
                        //3.2 ログインキャンセル
                    }

                    @Override
                    public void onError(FacebookException exception) {
                        //3.3 ログイン失敗
                    }
                });
       /*-- /facebook SDK --*/
	}
	
	@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //4.コールバック設定（Activity戻ってきた時にコールバックを呼ぶ）
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }
```

##サンプル
[facebookSDKLoginSample](https://github.com/buchiosan/facebookSDKLoginSample)

サンプル内では、名前、メール、サムネ取得までをやっております。

##サンプルを動かす際の注意点
サンプルを動かす際の注意点ですが、必ずご自身のfacebookAppIDをご利用下さい。でないと動きません。

サンプル内では入力されていない状態になっているので、必ず入力ください。

```xml:strings.xml
<string name="app_id">ご自身のappID</string>
```

##最後に
ここまでお付き合いくださりありがとうございました。
Qiita初投稿で、はじめてGitHubを使ってみました。
皆様の参考になれば幸いです。

##参考
[Facebook Android SDK のサンプルコードを動かす方法](http://qiita.com/kassy_kz/items/69caae1017db433da7a2)
[How can I login facebook with my own button? (Facebook SDK 4.0)](http://stackoverflow.com/questions/29982016/how-can-i-login-facebook-with-my-own-button-facebook-sdk-4-0)

facebookのリファレンス
[https://developers.facebook.com/docs/facebook-login/android](https://developers.facebook.com/docs/facebook-login/android)
[https://developers.facebook.com/docs/android/graph/](https://developers.facebook.com/docs/android/graph/)