Preguntas frecuentes y solución de problemas del SDK de Facebook para Android

Preguntas frecuentes

Para Android 11, puedes añadir el siguiente bloque queries al archivo AndroidMainfest.xml del proyecto para resolver el problema:

<manifest package="com.example.app"> <queries> <provider android:authorities="com.facebook.katana.provider.PlatformProvider" /> </queries> ... </manifest>

Puedes utilizar un único identificador de la aplicación de Facebook con varias aplicaciones para Android. Simplemente usa el mismo identificador en otra aplicación para iniciar sesión, compartir contenido, etc.

A la hora de crear enlaces profundos y abrir la aplicación a través de notificaciones y otros medios, solo es compatible una única combinación de nombre de paquete y nombre de clase.

Si quieres crear enlaces profundos con varias aplicaciones, consulta App Links.

Puedes reemplazar cadenas del SDK de Facebook para Android proporcionando una traducción en tu propio archivo "strings.xml" para la configuración regional deseada.

El archivo "strings.xml" del directorio "facebook/res/values/" contiene todas las cadenas que utiliza el SDK. El nombre de las cadenas describe su contenido.

Para obtener más información, consulta la sección "Localizing with Resources" (Localizar con recursos) en la guía para desarrolladores de Android.

Todas las versiones del SDK de Facebook para Android con el cuadro de diálogo de contenido compartido nativo incluyen también un APK para la aplicación de Facebook.

Este APK se incluía en la descarga del SDK hasta la versión 3.14.1. Posteriormente, pasó a descargarse por separado. Puedes encontrar los APK en nuestra página de descargas.

Simplemente instala el APK de Facebook en tu emulador de Android o dispositivo con este sistema operativo, y prueba el cuadro de diálogo de contenido compartido nativo en la aplicación.

Normalmente, las bibliotecas de Android pueden utilizar "BuildConfig.DEBUG" para determinar si la aplicación se encuentra en modo de depuración. Sin embargo, debido a un error en Gradle, las bibliotecas de Android vienen siempre con "DEBUG" establecido en "false". Como solución alternativa, hay un método "FacebookSdk.setIsDebugEnabled(boolean)" que permite configurar el modo de depuración directamente desde la aplicación. De este modo, el registro de depuración se activa desde el SDK.

También puedes configurar comportamientos de registro con "FacebookSdk.addLoggingBehavior(LogginBehavior)", con el fin de activar el registro para diferentes categorías de mensajes. Consulta la sección referente a LoggingBehavior en la referencia del SDK para Android.

El cuadro de diálogo de contenido compartido devuelve llamadas a "onSuccess" y "onCancel" tras una acción del usuario.

  • "onSuccess" cuando el usuario comparte contenido correctamente. Además, habrá también un "postId" en la clase "Sharer.Result" si el usuario le ha concedido a la aplicación permisos "publish_actions". También se llamará a este método si el usuario no ha accedido mediante el inicio de sesión con Facebook y hace clic en Cancelar.
  • "onCancel" cuando alguien hace clic en el botón "X" del cuadro de diálogo de contenido compartido, o bien si accede mediante el inicio de sesión con Facebook y hace clic en Cancelar.

Solución de problemas

Cuando solicites permisos de publicación, es posible que obtengas uno de los siguientes errores:

  • "Session: an attempt was made to request new permissions for a session that has a pending request" o
  • "Attempted to authorize while a request is pending".

Estos mensajes de error indican que la aplicación ha intentado solicitar nuevos permisos antes de que se haya completado la solicitud en curso. Todas las solicitudes de permisos son asincrónicas, por lo que no puedes solicitar nuevos permisos hasta que se complete la solicitud en curso.

Consulta las aplicaciones de ejemplo que proporcionamos con el SDK, como Scrumptious o Hello de Facebook, para obtener información sobre cómo solicitar nuevos permisos en varios pasos.

Si no hay ningún error en los registros, es probable que la solicitud no se haya ejecutado. Para ejecutar el objeto "GraphRequest", llama al método "executeAsync".

Para iniciar sesión o utilizar cuadros de diálogo de contenido compartido nativos, debes indicarle a Facebook la clave que utilizas para firmar las aplicaciones.

Se trata de un hash SHA-1 de la clave utilizada para firmar la aplicación. Normalmente, se utilizan como mínimo dos claves diferentes: una para desarrollo y depuración, y otra para comercialización. Comprueba que se hayan añadido ambos valores en la página de configuración de tu aplicación.

Para obtener más información, consulta Primeros pasos de SDK para Android: Crear un hash de clave de desarrollo.

La causa más habitual es no haber configurado "ContentProvider" en el archivo "AndroidManifest.xml". Asegúrate de añadirlo al archivo "AndroidManifest.xml" con el identificador de la aplicación. Consulta Compartir en Android - Requisitos previos.