title: Android Facebook SDK 4.X , how to get Email address and Facebook Access Token to pass it to Web Service
body: <p>EDIT : 
  My Question is how to get Email , UserId , Facebook Authentication with Facebook SDK 4.X , at this moment , with Ming Respond , i know how can i  get Email , User Id , so my question is how to get Facebook Authentication since Session and GraphUser has just been replaced by LoginManager and AccessToken and there is no information about it?</p>
  
  <pre><code>import android.app.Activity;
  import android.content.Intent;
  import android.os.Bundle;
  import android.util.Log;
  import com.facebook.AccessToken;
  import com.facebook.AccessTokenTracker;
  import com.facebook.CallbackManager;
  import com.facebook.FacebookCallback;
  import com.facebook.FacebookException;
  import com.facebook.Profile;
  import com.facebook.ProfileTracker;
  import com.facebook.login.LoginResult;
  import com.facebook.login.widget.LoginButton;
  import java.util.Arrays;
  
  public class RegisterActivity extends Activity {
      private String fbUserID;
      private String fbProfileName;
      private String fbAuthToken;
      private LoginButton fbLoginBtn;
      private static final String TAG = "FacebookLogin";
      CallbackManager callbackManager;
      private AccessTokenTracker accessTokenTracker;
      private ProfileTracker profileTracker;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.register_activity);
          fbLoginBtn = (LoginButton) findViewById(R.id.connect_with_facebook_button);
          fbLoginBtn.setReadPermissions(Arrays.asList("email", "user_photos", "public_profile"));
          fbLoginBtn.setBackgroundResource(R.drawable.connect_facebook_button);
  
  
          accessTokenTracker = new AccessTokenTracker() {
              @Override
              protected void onCurrentAccessTokenChanged(
                      AccessToken oldAccessToken,
                      AccessToken currentAccessToken) {
                  fbAuthToken = currentAccessToken.getToken();
                  fbUserID = currentAccessToken.getUserId();
  
  
                  Log.d(TAG, "User id: " + fbUserID);
                  Log.d(TAG, "Access token is: " + fbAuthToken);
  
  
              }
          };
  
          profileTracker = new ProfileTracker() {
              @Override
              protected void onCurrentProfileChanged(
                      Profile oldProfile,
                      Profile currentProfile) {
                  fbProfileName = currentProfile.getName();
  
                  Log.d(TAG, "User name: " + fbProfileName );
              }
          };
  
  
          fbLoginBtn.registerCallback(callbackManager, new FacebookCallback&lt;LoginResult&gt;() {
              @Override
              public void onSuccess(LoginResult loginResult) {
  
              }
  
              @Override
              public void onCancel() {
                  // App code
              }
  
              @Override
              public void onError(FacebookException exception) {
                  // App code
              }
          });
  
      }
  
  
      @Override
      public void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
  callbackManager.onActivityResult(requestCode, resultCode, data);
  
  
  
      }
  
  GraphRequest request = GraphRequest.newMeRequest(
          accessToken,
          new GraphRequest.GraphJSONObjectCallback() {
              @Override
              public void onCompleted(
                      JSONObject user,
                      GraphResponse response) {
                  String id = user.optString("id");
                  String firstName = user.optString("first_name");
                  String lastName = user.optString("last_name");
                  String email = user.optString("email");
  
              }
  
      @Override
      public void onSaveInstanceState(Bundle savedState) {
          super.onSaveInstanceState(savedState);
      }
  </code></pre>