package com.jdroid.android.sample.ui.facebook;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.view.View;
import android.widget.TextView;
import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.Profile;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.jdroid.android.fragment.AbstractFragment;
import com.jdroid.android.loading.FragmentLoading;
import com.jdroid.android.loading.NonBlockingLoading;
import com.jdroid.android.sample.R;
public class FacebookSignInFragment extends AbstractFragment {
private LoginButton signInButton;
private TextView status;
private CallbackManager callbackManager;
@Override
public Integer getContentFragmentLayout() {
return R.layout.facebook_signin_fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
callbackManager = CallbackManager.Factory.create();
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
status = findView(R.id.status);
signInButton = findView(R.id.signIn);
signInButton.setFragment(this);
signInButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
setLoggedStatus();
Snackbar.make(findView(R.id.container), "onSignIn", Snackbar.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
status.setText(exception.toString());
Snackbar.make(findView(R.id.container), "onError", Snackbar.LENGTH_SHORT).show();
}
});
}
private void setLoggedStatus() {
StringBuilder builder = new StringBuilder();
builder.append("Name: ");
builder.append(Profile.getCurrentProfile().getName());
builder.append("\nId: ");
builder.append(Profile.getCurrentProfile().getId());
builder.append("\nAccess Token: ");
builder.append(AccessToken.getCurrentAccessToken());
status.setText(builder.toString());
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
@Override
public FragmentLoading getDefaultLoading() {
return new NonBlockingLoading();
}
}