Android Application Login with Facebook is not working with Facebook App installed
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
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, 2022Comments
-
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 about 8 yearsplace your callbackmanager after setContentView in onCreate method and try again
-
MobDev about 8 yearsdo 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 about 8 yearsimplement @Override public void onError(FacebookException error) { }
-
MobDev about 8 yearsimplement onError in fb registercallback and check what error message it is showing
-
MobDev about 8 yearsalso check log.. it will giving some message from facebook with some error
-
Yaseen Ahmad about 8 yearscheck the code i already add the onError and onCancel methods
-
MobDev about 8 yearsok 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 over 6 yearsyes!!! needs to override onActivityResult to get login callback working. Thanks you saved my day!