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); } }
- Facebook Android SDK 3.0, cómo compartir contenido sin el LoginButton
- Autenticación con Facebook al principio y luego Google provoca un error en Firebase para Android
- Login de Android Facebook "LoginActivity could not be started"
- Facebook - Android autoriza el error de la aplicación
- Facebook Login / Google Login - ¿La misma actividad?
- Cómo cambiar el idioma de com.facebook.widget.LoginButton en Android
- La aplicación proxy no puede solicitar permisos de publicación sin haber sido instalados previamente
- Analizar con inicio de sesión de Facebook - Posiblemente desde APK v42 o Graph API v2.4
- Facebook onCompleted Email java.lang.NullPointerException
- Problema de inicio de sesión con facebook sdk 3.0 para android
- Facebook SDK 4.0.1 Iniciar sesión sin iniciar sesión
- Facebook SDK 4.0 LoginButton - setReadPermissions no funciona?
- Android facebook Api Exception
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.
- GLES2.0 – glDrawElements no funciona
- Creación de la clave de liberación de Facebook SDK 3.0 en Android