Androidはワンツーパンチ 三歩進んで二歩下がる

プログラミングやどうでもいい話

Facebookでログイン済みかどうかをチェックし、Facebook SDKのログイン画面を表示する

Facebook SDK v4で動作確認しています。

おなじみのログイン画面
f:id:sakura_bird1:20150909011232p:plain


Facebookでログイン済みかどうかをチェック
(他にいい方法があるかもしれませんが)

    private boolean checkLogin() {
        AccessToken accessToken = AccessToken.getCurrentAccessToken();
        return accessToken != null;
    }

Facebook SDKのログイン画面を表示する

    private CallbackManager mCallbackManager;

    private void login() {
        mCallbackManager = CallbackManager.Factory.create();

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

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

            @Override
            public void onError(FacebookException exception) {
                //ログイン失敗
            }
        });
        LoginManager.getInstance().logInWithReadPermissions(this,
                Arrays.asList("email", "public_profile", "user_friends"));
    }



    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        mCallbackManager.onActivityResult(requestCode, resultCode, data);
    }

CallbackManagerを使用するとおなじみのログイン画面が表示できます。
ログイン結果をコールバックで受け取るためにはonActivityResultの処理が必須となります。

Arrays.asList("email", "public_profile", "user_friends"));
となっている箇所にはアプリで必要とする権限を指定します。developers.facebook.com

権限は"email", "public_profile", "user_friends"以外はFacebookのDeveloper Consoleから申請する必要があります。