La devolución de llamada de Facebook LoginButton no se llama

Estoy tratando de implementar un sencillo inicio de sesión de Facebook en mi aplicación para Android. Cuando hago clic en el botón de inicio de sesión, la aplicación se redirige a la página de Facebook, después de introducir las credenciales, se vuelve a devolver a mi aplicación. Sin embargo, las funciones de devolución de llamada de LoginButton no se llaman. Aunque había algunas preguntas similares a esto, pero tenían una clase de fragmento por separado. Sin embargo, estoy haciendo todo de la actividad principal. El siguiente es mi código:

package com.example.ankur.facebookdemo; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Toast; import com.facebook.CallbackManager; import com.facebook.FacebookCallback; import com.facebook.FacebookException; import com.facebook.FacebookSdk; import com.facebook.login.LoginResult; import com.facebook.login.widget.LoginButton; public class MainActivity extends AppCompatActivity { private LoginButton loginButton; CallbackManager callbackManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getApplicationContext()); callbackManager = CallbackManager.Factory.create(); setContentView(R.layout.activity_main); loginButton = (LoginButton) findViewById(R.id.login_button); if (loginButton == null) { Log.v("CheckLogin", "null"); } else { Log.v("CheckLogin", "not null"); } loginButton.setReadPermissions("user_friends"); loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code Toast.makeText(getApplicationContext(),"Fb Login Success", Toast.LENGTH_LONG); Log.v("CheckLogin", "successfully connected to facebook"); } @Override public void onCancel() { // App code Toast.makeText(getApplicationContext(),"Fb on cancel",Toast.LENGTH_LONG); Log.v("CheckLogin", " connection to facebook cancelled"); } @Override public void onError(FacebookException exception) { // App code Toast.makeText(getApplicationContext(),"Fb Login Error",Toast.LENGTH_LONG); Log.v("CheckLogin", "Error on connection to facebook"); } }); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } 

Ha olvidado anular el método onActivityResult() . onActivityResult() hace que se onActivityResult() los métodos de devolución de llamada.

Haga algo como esto:

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); } 

¡Espero que esto ayude! Todo lo mejor 🙂

Estás perdiendo el gancho onActivityResult :

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); } 

La documentación establece claramente que:

Cada actividad y fragmento que se integra con FacebookSDK Login o Share debe enviar onActivityResult al callbackManager.

  • Botón de inicio personalizado de Facebook en el estudio android
  • No se puede reloginar con las credenciales de Facebook después de cerrar la sesión
  • Facebook SDK importar en Android Studio y añadirlo en mi aplicación
  • ¿Cómo obtener el token de acceso actual en Facebook Android SDK V4?
  • Inicio de sesión de Facebook con la aplicación no instalada redirecciona a la página de inicio de sesión
  • "Error de cookies no habilitado" en algunos dispositivos
  • Cómo cambiar la altura del botón 'Iniciar sesión con Facebook'?
  • Actividad de Facebook no se carga correctamente en facebook-sdk 4.4.0
  • Error al inflar la clase com.facebook.widget.LoginButton con Facebook SDK 4.0.1
  • SDK de Android Facebook: el hash de clave no coincide con ningún hash de clave almacenado al cargar Google Play
  • Acceso a Facebook en el navegador de celulares a través de la aplicación de Facebook
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.