This code is working well when I uninstalled the Facebook App but didn't work with Facebook App installed. I'm 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 for checking login
public boolean isLoggedIn() {
AccessToken accessToken = AccessToken.getCurrentAccessToken();
return accessToken != null;
}
this on Resume and on Stop methods
@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();
}
}
Check For Updates (Android and iOS). If you cannot access your account on the app but can log in on Facebook's website, then try to update your Facebook app. Possibly, the version of Facebook installed on your device is no longer supported, or it contains a bug or glitch related to logging in.
Check for app updates Sometimes, having an older version of an application may cause issues. If problems persist, you want to ensure you're running the latest app version. Head to the Google Play Store (or any app store you use) and check for any available updates.
where is your onActivityResult()
code. In onActivityResult()
you need to use callbackmanager
. User below code:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
above will work both in fragment/activity. Make sure you have
1. facebook app installed on your testing device
2. In facebook developer account check whether you have mentioned
- correct package name : refer your android project manifestfile.xml
- check that have you mentioned correct launcher class
- Check that you have given correct debug/release hash key
3. Cross check your facebook application id and that mentioned in your manifestfile.xml facebook meta data are same
In your code change below
create you callbackmanager
after setContentView(...)
;
change it to below
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
setContentView(R.layout.activity_login);
callbackManager = CallbackManager.Factory.create();
Remember if this is with you facebook issue then your problem lies within this dont waste time in searching other thing. Also put log in failure method in callback of facebook sdk.
Post comment if you still have problem
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With