Created
February 20, 2017 18:06
-
-
Save vascoV/42004b79557a117ba2f3cd7ffd502893 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
} | |
}; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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