I am integrating facebook login in my appication. It works fine but I want to start a new activity after successfull login. New Activity is not startted This is my code.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_register_skip);
skip = (TextView) findViewById(R.id.textViewSkip);
register = (Button) findViewById(R.id.buttonRegisterOne);
skip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SessionHandler handler = new SessionHandler(RegisterSkipActivity.this.getApplicationContext());
handler.storeLoginSession("guest");
SharedPreferences.Editor editor = getSharedPreferences(
"MyPref", MODE_PRIVATE).edit();
String p_name ="guest";
editor.putString("personName", p_name);
editor.putString("TAG", "guest");
editor.commit();
Intent intent = new Intent(RegisterSkipActivity.this, MainActivity.class);
intent .putExtra("username","Guest");
startActivity(intent);
}
});
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
/////fb and g+
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.techieweb.solutions.pickeronline",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
loginButton = (LoginButton) findViewById(R.id.login_button);
btnSignIn = (SignInButton) findViewById(R.id.btn_sign_in);
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
btnSignIn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
signIn();
}
});
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
type = "1";
loginResult.getAccessToken().getToken());
Log.e("In onSuccess","onsuccess");
Intent intent = new Intent(RegisterSkipActivity.this, MainActivity.class);
intent.putExtra("Login", type);
startActivity(intent);
}
@Override
public void onCancel() {
// info.setText("Login attempt cancelled.");
Log.e("In onCancel","oncancel");
}
@Override
public void onError(FacebookException e) {
//info.setText("Login attempt failed.");
Log.e("In onError","onerror");
}
});
}
There are no errors. Login screens of facebook are shown.Only new activity is not started. Please help me
You missed the onactivityresult portion. !!!
The problem seems to be with that you are not triggering the callbackManager on onActivityResult after login success. This is the reason why the " onsuccess", " onfailure" or "onerror " methods are not called.
check the below codes. Paste it in your Activity Class
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
Reference link From Facebook Official.
Let me know if you have any queries.