package com.stanleycen.facebookanalytics;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import com.facebook.Session;
import com.facebook.SessionState;
import java.util.Arrays;
public class LoginActivity extends Activity implements OnClickListener {
private Session.StatusCallback mStatusCallback = new SessionStatusCallback();
private FBLoginButton loginButton;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
loginButton = (FBLoginButton) findViewById(R.id.loginButton);
loginButton.setOnClickListener(this);
Session session = Session.getActiveSession();
if (session != null && session.isOpened()) {
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
finish();
} else if (session == null) {
SharedPreferences prefs = getSharedPreferences(GlobalApp.PREFS_FILE, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.remove("FBID");
editor.remove("FBNAME");
editor.commit();
if (savedInstanceState != null) {
session = Session.restoreSession(this, null, mStatusCallback, savedInstanceState);
}
if (session == null) {
String appId = getString(R.string.app_id);
session = new Session.Builder(getBaseContext()).setApplicationId(appId).build();
}
Session.setActiveSession(session);
if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
session.openForRead(new Session.OpenRequest(this).setCallback(mStatusCallback));
}
}
}
@Override
public void onClick(View view) {
Session session = Session.getActiveSession();
Log.v("fb", "onClick");
if (!session.isOpened() && !session.isClosed()) {
session.openForRead(new Session.OpenRequest(this).setPermissions(Arrays.asList("read_mailbox", "basic_info")).setCallback(mStatusCallback));
} else {
Session.openActiveSession(this, true, mStatusCallback);
}
}
private void sessionStatusChanged() {
Session session = Session.getActiveSession();
if (session.isOpened()) {
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
finish();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession()
.onActivityResult(this, requestCode, resultCode, data);
}
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
Log.v("fb", state.toString());
sessionStatusChanged();
}
}
}