Introducción al SDK de Facebook para Android

En esta documentación se explican los primeros pasos para integrar la aplicación para Android con Facebook mediante el SDK de Facebook para Android. La versión actual del SDK de Facebook para Android es la 12.0.0 y requiere la API de Android 15. Para obtener más información sobre las versiones y las funciones, consulta SDK de Facebook para Android.

Cuando utilizas el SDK de Facebook, algunos eventos de la aplicación se registran automáticamente y se recopilan para Facebook Analytics, a no ser que desactives el registro automático de eventos. Si quieres obtener información más detallada sobre los datos recopilados y cómo desactivar el registro automático de eventos, consulta el apartado sobre el registro automático de eventos de la aplicación.

Para configurar la aplicación para usar el SDK de Facebook para Android puedes realizar las siguientes acciones:

  • Utilizar el Inicio rápido.
  • Configurar el proyecto con el SDK de Facebook para Android.

Inicio rápido

Para obtener un identificador de la aplicación de Facebook, ajusta la configuración de la aplicación e importa el SDK de Facebook para Android, haz clic en el botón que aparece debajo y sigue las instrucciones.

Inicio rápido para Android

Comprender el permiso de identificador del anunciante

A partir de la versión 13.0.0, cada aplicación que creas con el SDK de Facebook para Android añade automáticamente el permiso de identificador del anunciante a tu aplicación. Para obtener más información, consulta Identificador del anunciante: Ayuda de Play Console.

En algunos casos, tal vez quieras dejar de incluir el permiso de identificador del anunciante en la aplicación. Por ejemplo, si los clientes de la aplicación son niños o familias, puede que el permiso de identificador del anunciante no sea pertinente. Para excluir el permiso de identificador del anunciante de la aplicación, sigue las instrucciones que aparecen más adelante en esta documentación.

Configuración de Android Studio

Crear un proyecto

Para usar el SDK de Facebook en un proyecto de Android Studio, añade el SDK como dependencia de compilación e impórtalo.

  1. Accede a Android Studio | Nuevo proyecto | SDK mínimo.

  2. Selecciona API 15: Android 4.0.3 (IceCreamSandwich) o una versión superior para crear un proyecto nuevo.

  3. Abre el archivo Gradle Scripts | build.gradle (Project: <your_project>) y añade lo siguiente:

    mavenCentral()
    
  4. Guarda y cierra el archivo build.gradle (Project: <your_project>).

  5. Abre el archivo Gradle Scripts | build.gradle (Module: app) y añade el siguiente código en la sección dependencies:

    implementation 'com.facebook.android:facebook-android-sdk:latest.release'
    

  6. Guarda y cierra el archivo build.gradle (Module: app).

  7. Compila el proyecto. Ahora ya puedes importar com.facebook.FacebookSdk en la aplicación.

Actualizar el manifiesto

Añade el identificador de la aplicación y el identificador de acceso del cliente al archivo de cadenas del proyecto y actualiza el archivo del manifiesto. Haz lo siguiente:

  1. Abre el archivo /app/res/values/strings.xml en el proyecto de la aplicación.

  2. Añade los elementos string con los nombres facebook_app_id y facebook_client_token, y establece los valores del identificador de la aplicación y el identificador de acceso del cliente. Por ejemplo, si tu identificador de la aplicación es 1234 y tu identificador de acceso del cliente es 56789, el código tendrá un aspecto similar al siguiente:

    <string name="facebook_app_id">1234</string><string name="facebook_client_token">56789</string>
  3. Abre el archivo /app/manifests/AndroidManifest.xml en el proyecto de la aplicación.

  4. Añade los elementos meta-data al elemento application para tu identificador de la aplicación e identificador de acceso del cliente:

    <application android:label="&#064;string/app_name" ...>
        ...
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/><meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
        ...
    </application>
  5. Añade un elemento uses-permission al manifiesto después del elemento application:

    <uses-permission android:name="android.permission.INTERNET"/>
  6. (Opcional) Para retirar el consentimiento del permiso de identificador publicitario, añade un elemento uses-permission al manifiesto después del elemento application:

    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
  7. Compila el proyecto.

Activar el uso compartido

Si compartes enlaces, imágenes o vídeos desde la aplicación, declara la autoridad FacebookContentProvider en el manifiesto. Haz lo siguiente:

  1. Abre el archivo /app/manifests/AndroidManifest.xml en el proyecto de la aplicación.

  2. Añade un elemento provider en el manifiesto para la autoridad FacebookContentProvider. Anexa el identificador de la aplicación al final del valor authorities. Por ejemplo, si el identificador de la aplicación es 1234, la declaración tiene el aspecto siguiente:

    <provider android:authorities="com.facebook.app.FacebookContentProvider1234"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true" />
    
  3. Compila el proyecto.

Ejecutar aplicaciones de muestra

Las muestras siguientes se incluyen con el SDK de Facebook para Android:

  • HelloFacebookSample: demuestra el acceso al perfil, las actualizaciones de estado y las subidas de fotos.

Para hacer pruebas con las muestras, puedes importar el SDK de Facebook en un proyecto de Android Studio. Las muestras tienen una dependencia del proyecto en lugar de una dependencia del repositorio central mediante Maven Central o jCenter. De este modo, cuando una copia local del SDK recibe actualizaciones, los cambios se reflejan en las muestras.

Para ejecutar aplicaciones de muestra rápidamente, puedes generar hashes de clave para los entornos de desarrollo. Añádelos a tu perfil de desarrollador de Facebook de las aplicaciones de muestra. La herramienta Keytool, que permite generar hashes de clave, se incluye con el software Java SE Development Kit (JDK) que instalaste como parte de la configuración del entorno de desarrollo. OpenSSL está disponible para descargar desde OpenSSL.

En OS X, ejecuta lo siguiente:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

En Windows, necesitas lo siguiente:

Ejecuta el siguiente comando en un símbolo del sistema en la carpeta del SDK de Java. Se generará una cadena de 28 caracteres.

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64

Ve al sitio para desarrolladores de Facebook. Inicia sesión en Facebook y, en el menú desplegable de la parte superior derecha, ve a Configuración para desarrolladores:

En la configuración para desarrolladores, selecciona Aplicación de muestra en el menú y añade y guarda el hash de clave en tu perfil:

Puedes añadir varios hashes de clave si desarrollas contenido con varias máquinas.

Ahora ya puedes compilar y ejecutar todas las muestras, incluidas las que usan el inicio de sesión con Facebook.

Crear un hash de clave de desarrollo

Facebook usa el hash de clave para autenticar las interacciones entre tu aplicación y la aplicación de Facebook. Si ejecutas aplicaciones que usan el inicio de sesión con Facebook, debes añadir tu hash de clave de desarrollo de Android en el perfil de desarrollador de Facebook.

Para la versión de tu aplicación en la que realizas la publicación, también debes generar y establecer un hash de clave de activación.

Para obtener un hash de clave en OS X o Windows, puedes generarlo o usar el valor que devuelve Settings.getApplicationSignature(Context). Para obtener instrucciones, consulta la sección Ejecutar aplicaciones de muestra.

Crear un hash de clave de activación

Para autenticar el intercambio de información entre tu aplicación y la de Facebook, debes generar un hash de clave de activación y añadirlo a la configuración de Android dentro del identificador de la aplicación de Facebook. Sin él, es posible que la integración de Facebook no funcione debidamente cuando publiques la aplicación en la tienda.

En un paso anterior, deberías haber actualizado tu configuración de desarrollador de Facebook con los hashes de clave de los entornos de desarrollo.

Al publicar la aplicación, normalmente se firma con una firma distinta en el entorno de desarrollo. Por este motivo, comprueba que has creado un hash de clave de activación y añádelo a la configuración de Android para el identificador de la aplicación de Facebook.

Para generar un hash de tu clave de activación, ejecuta el siguiente comando en Mac o Windows, y sustituye el alias de la clave de activación y la ruta de tu almacén de claves.

En Mac OS, ejecuta lo siguiente:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

En Windows, necesitas lo siguiente:

Ejecuta el siguiente comando en un símbolo del sistema en la carpeta del SDK de Java:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | PATH_TO_OPENSSL_LIBRARY\bin\openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64

Asegúrate de usar la contraseña que estableciste al crear la clave de activación por primera vez.

Este comando debería generar una cadena de 28 caracteres. Copia y pega el hash de clave de activación en la configuración de Android del identificador de la aplicación de Facebook.

Asimismo, comprueba que la configuración de Android del identificador de la aplicación de Facebook contiene el nombre de paquete y la clase de actividad principal correctos para el paquete de Android.

Usar el SDK de Facebook para Android con Maven

Puedes declarar la dependencia de Maven con la última versión disponible del SDK de Facebook para Android.

<dependency>
  <groupId>com.facebook.android</groupId>
  <artifactId>facebook-android-sdk</artifactId>
  <version>PUT_LATEST_VERSION_HERE</version>
</dependency> 

Solucionar problemas con las aplicaciones de muestra

Si tienes algún problema al ejecutar una aplicación de muestra, puede que esté relacionado con el hash de clave. Puede que observes una de las siguientes situaciones:

  • Aparece un cuadro de diálogo de inicio de sesión nativo, pero después de aceptar los permisos todavía no se ha iniciado la sesión. Logcat también contiene una excepción:
12-20 10:23:24.507: W/fb4a:fb:OrcaServiceQueue(504):
com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id
  • Aparece un cuadro de diálogo de inicio de sesión no nativo con un mensaje de error que indica que la aplicación no se ha configurado correctamente para el inicio de sesión con Facebook.

Comprueba el hash de clave y asegúrate de que usas el correcto. I

También puedes modificar el código de muestra manualmente para usar el hash de clave correcto. Por ejemplo, en la clase HelloFacebookSampleActivity, realiza un cambio temporal en onCreate():

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                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 (NameNotFoundException e) {
        
    } catch (NoSuchAlgorithmException e) {
        
    }
    
    ...

Guarda los cambios y vuelve a ejecutar la muestra. Comprueba la salida de Logcat y busca un mensaje parecido al siguiente:

12-20 10:47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=

Guarda el hash de clave en tu perfil de desarrollador. Vuelve a ejecutar las muestras y comprueba que puedes iniciar sesión correctamente.