Android Application Login with Facebook is not working with Facebook App installed

10,812

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

Share:
10,812
Yaseen Ahmad
Author by

Yaseen Ahmad

I’m an experienced web developer, with expertise in Angular, Vue, React, Node, Bootstrap and Codeigniter. For over half decade I have worked on different online and offline platforms and technologies with different teams, developers, data analysts and communication experts. I have had a good fortune to work among some enthusiastic IT foundations who brings the best out of your creativity. My professional experience can be summed up as. I love to code I have been professionally involved in web development as a career line. I have the privilege to work on all the modern day coding languages PHP, Java, C# and JavaScript. Since JavaScript is called the language of the web so I prefer it the most. Reach out if you want to talk something about technology and making something phenomenal out of it. Hit me up at yaseenahmad402 (at) gmail (dot) com

Updated on June 05, 2022

Comments

  • Yaseen Ahmad
    Yaseen Ahmad almost 2 years

    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();
        }
    }
    
  • MobDev
    MobDev about 8 years
    place your callbackmanager after setContentView in onCreate method and try again
  • MobDev
    MobDev about 8 years
    do checks for 1.facbook app id in manifestfile as in your fb developer account 2. check your package name and MainActivity mentioned in fb dev account is correct 3.Check you have added proper hash key based on debug or release keystore
  • MobDev
    MobDev about 8 years
    implement @Override public void onError(FacebookException error) { }
  • MobDev
    MobDev about 8 years
    implement onError in fb registercallback and check what error message it is showing
  • MobDev
    MobDev about 8 years
    also check log.. it will giving some message from facebook with some error
  • Yaseen Ahmad
    Yaseen Ahmad about 8 years
    check the code i already add the onError and onCancel methods
  • MobDev
    MobDev about 8 years
    ok here is an update: Your android code is good. I did hands on with it. I was able to login. but check your facebook app id and manifestfile.xml file settings
  • mili
    mili over 6 years
    yes!!! needs to override onActivityResult to get login callback working. Thanks you saved my day!