Muhammad Sadiq Alvi Muhammad Sadiq Alvi - 3 months ago 63
Android Question

Facebook Login CallbackManager FacebookCallback not called?


  • I trying to login with LoginButton but the login callbacks are not being called.(LoginButton is in a Fragment) .

  • FacebookSdk.sdkInitialize is called in the Application onCreate

  • No Callbacks are called after login is completed.
    Here is the Code:



Activity:

public class FrameActivity extends BaseActivity {

public static CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
// FacebookSdk.sdkInitialize is called in the Application onCreate

callbackManager = CallbackManager.Factory.create();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);

}
}


Fragment:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_login, container, false);
LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button);
loginButton.setReadPermissions("user_friends");
loginButton.setReadPermissions("public_profile");
loginButton.setReadPermissions("email");
loginButton.setReadPermissions("user_birthday");
// If using in a fragment
loginButton.setFragment(this);
// Other app specific specialization

// Callback registration
loginButton.registerCallback(FrameActivity.callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {


}
@Override
public void onCancel() {
// App code

}

@Override
public void onError(FacebookException exception) {
// App code

}
});
return view;
}


Please suggest the solution asap.

Answer

Try this:

  1. Init FacebookSdk.sdkInitialize() in fragment's onCreateView().

  2. Next line init callbackManager = CallbackManager.Factory.create();

  3. Implement on onActivityResult() in Fragment class.

  4. Add your callbackManager.onActivityResult(requestCode, resultCode, data); in fragment onActivityResult().

Make sure remove FacebookInit() and callbackManager from activity.