Skip to content

Instantly share code, notes, and snippets.

@vascoV
Created February 20, 2017 18:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vascoV/42004b79557a117ba2f3cd7ffd502893 to your computer and use it in GitHub Desktop.
Save vascoV/42004b79557a117ba2f3cd7ffd502893 to your computer and use it in GitHub Desktop.
public class LogIn extends AppCompatActivity {
private CallbackManager mFacebookCallbackManager;
private TextView info;
private LoginButton loginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
mFacebookCallbackManager = CallbackManager.Factory.create();
setContentView(R.layout.login_layout);
info = (TextView) findViewById(R.id.info);
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));
loginButton.registerCallback(mFacebookCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
info.setText("User ID: " +
loginResult.getAccessToken().getUserId() + "\n" +
"Auth Token: " + loginResult.getAccessToken().getToken());
String accessToken = loginResult.getAccessToken().getToken();
// save accessToken to SharedPreference
PrefUtils.saveAccessToken(accessToken);
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject jsonObject, GraphResponse response) {
// Getting FB User Data
Bundle facebookData = getFacebookData(jsonObject);
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,first_name,last_name,email,gender");
request.setParameters(parameters);
request.executeAsync();
// Enable Main activity after login. Take username and store on DB!!
}
@Override
public void onCancel() {
info.setText("Login attempt cancelled.");
}
@Override
public void onError(FacebookException e) {
e.printStackTrace();
info.setText("Login attempt failed.");
deleteAccessToken();
}
});
}
private Bundle getFacebookData(JSONObject object) {
Bundle bundle = new Bundle();
try {
String id = object.getString("id");
URL profile_pic;
try {
profile_pic = new URL("https://graph.facebook.com/" + id + "/picture?type=large");
Log.i("profile_pic", profile_pic + "");
bundle.putString("profile_pic", profile_pic.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
}
bundle.putString("idFacebook", id);
if (object.has("first_name"))
bundle.putString("first_name", object.getString("first_name"));
if (object.has("last_name"))
bundle.putString("last_name", object.getString("last_name"));
if (object.has("email"))
bundle.putString("email", object.getString("email"));
// PrefUtils.saveFacebookUserInfo(object.getString("first_name"),
// object.getString("last_name"), object.getString("email"),
// object.getString("gender"), profile_pic.toString());
} catch (Exception e) {
Log.d("APOEL", "BUNDLE Exception : " + e.toString());
}
return bundle;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data);
}
private void deleteAccessToken() {
AccessTokenTracker accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
if (currentAccessToken == null) {
//User logged out
// PrefUtils.clearToken();
LoginManager.getInstance().logOut();
}
}
};
}
}
public class PrefUtils {
private Activity activity;
// Constructor
public PrefUtils(Activity activity) {
this.activity = activity;
}
public void saveAccessToken(String token) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("fb_access_token", token);
editor.apply(); // This line is IMPORTANT !!!
}
public String getToken() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
return prefs.getString("fb_access_token", null);
}
public void clearToken() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
SharedPreferences.Editor editor = prefs.edit();
editor.clear();
editor.apply(); // This line is IMPORTANT !!!
}
public void saveFacebookUserInfo(String first_name, String last_name, String email, String gender, String profileURL){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("fb_first_name", first_name);
editor.putString("fb_last_name", last_name);
editor.putString("fb_email", email);
editor.putString("fb_gender", gender);
editor.putString("fb_profileURL", profileURL);
editor.apply(); // This line is IMPORTANT !!!
Log.d("MyApp", "Shared Name : "+first_name+"\nLast Name : "+last_name+"\nEmail : "+email+"\nGender : "+gender+"\nProfile Pic : "+profileURL);
}
public void getFacebookUserInfo(){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
Log.d("MyApp", "Name : "+prefs.getString("fb_name",null)+"\nEmail : "+prefs.getString("fb_email",null));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment