This code works well when I uninstalled the Facebook application , but did not work with the installed Facebook application. I am using Facebook SDK 4.0.
This is my code.
package com.example.nhp04.gqfood; import com.facebook.AccessToken; import com.facebook.AccessTokenTracker; import com.facebook.CallbackManager; import com.facebook.FacebookCallback; import com.facebook.FacebookException; import com.facebook.FacebookSdk; import com.facebook.Profile; import com.facebook.login.LoginResult; import com.facebook.login.widget.LoginButton; public class Login extends AppCompatActivity implements Animation.AnimationListener { private String info = ""; private LoginButton loginButton; private CallbackManager callbackManager; private AccessTokenTracker tracker; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getApplicationContext()); callbackManager = CallbackManager.Factory.create(); setContentView(R.layout.activity_login); loginButton = (LoginButton)findViewById(R.id.login_button); loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { AccessToken accessToken = loginResult.getAccessToken(); Profile profile = Profile.getCurrentProfile(); info = ("User ID: " + loginResult.getAccessToken().getUserId() + "\n" + "Auth Token: " + loginResult.getAccessToken().getToken()); } @Override public void onCancel() { info = ("Login attempt canceled."); } @Override public void onError(FacebookException e) { info = ("Login attempt failed."); } }); System.out.println(info); tracker = new AccessTokenTracker() { @Override protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) { } }; tracker.startTracking(); } }
this function to verify entry
public boolean isLoggedIn() { AccessToken accessToken = AccessToken.getCurrentAccessToken(); return accessToken != null; }
this is according to the methods Resume and on Stop
@Override protected void onResume() { super.onResume(); if (isLoggedIn()){ Intent home = new Intent(this, home.class); startActivity(home); } } @Override protected void onStop() { super.onStop(); tracker.stopTracking(); finish(); }
And this is my onActivityResult
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { Intent home = new Intent(this, home.class); startActivity(home); } else { Toast.makeText(getApplicationContext(), "Unable to login please check your internet connection",Toast.LENGTH_LONG).show(); } }
Yaseen ahmad
source share