Primeros pasos con el SDK para Android

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

Dispones de dos formas de configurar tu aplicación para utilizar el SDK de Facebook:

  • utilizando el inicio rápido,
  • configurando el proyecto con el SDK de Facebook.

Inicio rápido

Para obtener un identificador de la aplicación de Facebook, configura los ajustes de la aplicación e importa el SDK de Facebook; a continuación, haz clic en el botón inferior 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, añádelo 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 superior, y crea el proyecto.

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

4. Añade esto al nivel de módulo /app/build.gradle antes de dependencies:

repositories {
	mavenCentral() 
}

5. Añade la dependencia de compilación con la última versión del SDK de Facebook en el archivo build.gradle:

dependencies { 
  compile 'com.facebook.android:facebook-android-sdk:4.+'
}

6. Compila el proyecto. Ya puedes importar com.facebook.FacebookSdk en la aplicación.

Debes inicializar el SDK de Facebook para poder utilizarlo. Añade una llamada a FacebookSdk.sdkInitialize desde onCreate en tu clase Application:

// Add this to the header of your file:
import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;

public class MyApplication extends Application {
    // Updated your class body:
    @Override
    public void onCreate() {
        super.onCreate();
        // Initialize the SDK before executing any other operations,
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
    }
}

Añadir el identificador de la aplicación de Facebook

A continuación, añade el identificador de la aplicación de Facebook al archivo de cadenas del proyecto y actualiza el manifiesto de Android:

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

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

3. Abre AndroidManifest.xml.

4. Añade un elemento uses-permission al manifiesto:

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

5. Añade 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 vídeos

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

Añade 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 Tools Project Site, Running ProGuard.

Ejecutar aplicaciones de ejemplo

El SDK incluye los siguientes ejemplos:

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

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

Los ejemplos tienen una dependencia de proyecto en lugar de una dependencia de repositorio central a través de 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. Añade estos hashes a tu perfil de desarrollador de Facebook para las aplicaciones de ejemplo. El Java SE Development Kit (JDK) que instalaste como parte de la configuración del entorno de desarrollo incluye Keytool, una herramienta para generar hashes de clave. OpenSSL puede descargarse desde 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

Este comando genera 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:

En "Configuración para desarrolladores", selecciona Aplicación de muestra en el menú, añade el hash de clave en tu perfil y guárdalo:

Puedes añadir varios hashes de clave si utilizas varias máquinas para desarrollar aplicaciones.

Ya 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 utilicen el inicio de sesión con Facebook, tendrás que añadir el hash de clave de desarrollo de Android a tu perfil de desarrollo de Facebook.

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

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


Siguientes pasos

Una vez que instales el SDK de Facebook para Android y configures un identificador de la aplicación de Facebook, aparecerán los siguientes elementos:


Configurar hashes de clave de lanzamiento

Para autenticar el intercambio de información entre tu aplicación y la aplicación de Facebook, deberás generar un hash de clave de lanzamiento y añadirlo en la configuración de Android para el identificador de la aplicación de Facebook. Sin este hash, puede que la integración con Facebook no funcione correctamente 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 tus entornos de desarrollo.

Al publicar la aplicación, suele utilizarse una firma diferente a la del entorno de desarrollo. Por lo tanto, debes asegurarte de crear un hash de clave de lanzamiento y añadirlo en la configuración de Android para el identificador de la aplicación de Facebook.

Para generar un hash de tu clave de lanzamiento, ejecuta el siguiente comando en Mac o Windows, sustituyendo el alias de la clave de lanzamiento 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, utiliza:

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 lanzamiento.

Este comando debería generar una cadena de 28 caracteres. Copia y pega este hash de clave de lanzamiento 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 de 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 un problema con una aplicación de ejemplo, es posible que esté relacionado con el hash de clave. Puede que se dé una de las siguientes situaciones:

  • Aparece un cuadro de diálogo de inicio de sesión nativo, pero, tras 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: ''... La aplicación no está correctamente configurada para el inicio de sesión con Facebook...''.

Comprueba el hash de clave y asegúrate de que estés utilizando el correcto. I

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 la salida de 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 comprueba que puedes iniciar sesión correctamente.