Primeros pasos con el SDK para Android

El SDK de Facebook para Android es la forma más sencilla de integrar tu aplicación para Android con Facebook. Incluye:

Hay dos formas de configurar tu aplicación para usar el SDK de Facebook:

  • Con el inicio rápido
  • Al configurar tu proyecto con el SDK de Facebook

Inicio rápido

Para obtener un identificador de la aplicación de Facebook, establece la configuración de tu aplicación e importa el SDK de Facebook. Haz clic en el botón a continuación y sigue las instrucciones.

Inicio rápido para Android

 

Guías relacionadas:

Configuración de Android Studio

Para utilizar el SDK de Facebook en un proyecto, agrégalo como una dependencia de compilación e impórtalo.

1. Ve a Android Studio | New Project | Minimum SDK.

2. Selecciona API 15: Android 4.0.3 o una versión superior y crea tu nuevo proyecto.

3. Una vez creado un nuevo proyecto, abre your_app | build.gradle.

4. Agrega lo siguiente a la sección buildscript { repositories {}} del archivo build.gradle (Project):

mavenCentral() 

5. Agrega lo siguiente a la sección dependencies {} del archivo build.gradle (module: app) para compilar la última versión del SDK de Facebook:

compile 'com.facebook.android:facebook-android-sdk:[4,5)'

Cuando usas el SDK de Facebook, los eventos en tu aplicación se registran y recopilan automáticamente para Facebook Analytics, a menos que desactives automáticamente el registro de eventos. Para obtener información sobre qué información se recopila y cómo desactivar el registro de eventos de manera automática, consulta Registro automático de eventos de la aplicación.

6. Crea tu proyecto. Ahora, ya puedes importar com.facebook.FacebookSdk a tu aplicación.

Agregar el identificador de la aplicación de Facebook

A continuación, agrega el identificador de la aplicación de Facebook al archivo "strings" de tu proyecto y actualiza el manifiesto de Android:

1. Abre el archivo strings.xml. Ruta de ejemplo: /app/src/main/res/values/strings.xml.

2. Agrega una nueva cadena con el nombre facebook_app_id y el identificador de la aplicación de Facebook como valor.

3. Abre AndroidManifest.xml.

4. Agrega un elemento uses-permission al manifiesto:

<uses-permission android:name="android.permission.INTERNET"/>

5. Agrega un elemento meta-data al elemento application:

<application android:label="@string/app_name" ...>
    ...
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    ...
</application>

Enviar imágenes o videos

Si quieres compartir enlaces, imágenes o videos a través de la aplicación de Facebook para Android, también debes declarar FacebookContentProvider en el manifiesto.

Agrega el identificador de la aplicación al final del valor authorities. Por ejemplo, si el identificador de la aplicación de Facebook es 1234, la declaración tendrá el siguiente aspecto:

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

Usar el SDK con ProGuard

No es necesario que realices más acciones para utilizar ProGuard con el SDK de Facebook para Android. Para obtener instrucciones sobre ProGuard, consulta Android Developer Site: Shrink Your Code and Resources.

Ejecutar aplicaciones de ejemplo

El SDK incluye los siguientes ejemplos:

  • HelloFacebookSample: muestra acceso al perfil, actualizaciones de estado y subida de fotos.
  • RPSSample: usa el cuadro de diálogo de contenido compartido nativo, la publicación de Open Graph, selectores, invitaciones y enlaces profundos.
  • Scrumptious: inicio de sesión, solicitudes, selectores, subida de imágenes y publicación de Open Graph.

Para experimentar con los ejemplos, importa el SDK a un proyecto de Android Studio.

Los ejemplos 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 ejemplos reflejan los cambios.

Para ejecutar aplicaciones de ejemplo rápidamente, puedes generar hashes de clave para tus entornos de desarrollo. Agrégalos a tu perfil de desarrollador de Facebook para las aplicaciones de ejemplo. El kit de desarrollo de Java SE (JDK) que instalaste al momento de configurar tu entorno de desarrollo incluye Keytool, una herramienta para generar hashes de clave. OpenSSL está disponible para su descarga en OpenSSL.

En OS X, ejecuta:

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

En Windows, ejecuta:

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

Se generará una cadena de 28 caracteres.

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

Aquí, selecciona Aplicación de ejemplo en el menú, y agrega y guarda el hash de clave en tu perfil:

Puedes agregar varios hashes de clave si utilizas varias máquinas para desarrollar aplicaciones.

Ahora, puedes compilar y ejecutar todos los ejemplos, incluidos los que utilicen el inicio de sesión con Facebook.

Crear un hash de clave de desarrollo

Facebook utiliza el hash de clave para autenticar las interacciones entre tu aplicación y la aplicación de Facebook. Si ejecutas aplicaciones que utilizan el inicio de sesión con Facebook, tendrás que agregar el hash de clave de desarrollo para Android a tu perfil de desarrollador de Facebook.

Para la versión que lances de tu aplicación, también tendrás que generar y configurar un hash de clave de activación.

Para obtener un hash de clave en OS X o Windows, genéralo o utiliza el valor devuelto por Settings.getApplicationSignature(Context). Para obtener instrucciones, consulta Ejecutar aplicaciones de ejemplo.


Próximos pasos

Después de instalar el SDK de Facebook para Android y configurar un identificador de la aplicación de Facebook, verás los siguientes elementos:


Configurar un hash de clave de activación

Para autenticar el intercambio de información entre tu aplicación y la aplicación de Facebook, tendrás que generar un hash de clave de activación y agregarlo a la configuración de Android dentro de tu identificador de la aplicación de Facebook. Sin este hash, es posible que la integración con Facebook no funcione correctamente cuando lances la aplicación en la tienda.

En un paso anterior, actualizaste tu configuración para desarrolladores de Facebook con los hashes de clave para los entornos de desarrollo.

Cuando se publica una aplicación, usualmente tiene una firma diferente a la del entorno de desarrollo. Por lo tanto, debes asegurarte de crear un hash de clave de activación y agregarlo 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, reemplazando el alias de la clave de activación y la ruta del almacén de claves. En OS X, ejecuta:

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

En Windows, usa:

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

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

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

Asimismo, debes asegurarte de que la configuración de Android del identificador de la aplicación de Facebook contenga el nombre del paquete correcto y la clase de actividad principal de tu paquete de Android.


Usar el SDK de Facebook con Maven

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

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

Solución de problemas relacionados con aplicaciones de ejemplo

Si tienes problemas para ejecutar una aplicación de ejemplo, es posible que se relacionen con el hash de clave. Puede ser por alguna de las situaciones siguientes:

  • Aparece un cuadro de diálogo de inicio de sesión nativo, pero después de aceptar los permisos, no consigues iniciar sesión. El 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 está configurada correctamente para el inicio de sesión con Facebook.

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

También puedes modificar manualmente el código de ejemplo para utilizar el hash de clave correcto. Por ejemplo, en la clase HelloFacebookSampleActivity, realiza un cambio temporal a 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 el ejemplo. Comprueba si el resultado del logcat es un mensaje similar 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 los ejemplos y verifica si puedes iniciar sesión correctamente.