Inicio de sesión con Facebook para dispositivos

Si necesitas ayuda con Facebook Portal, visita el Servicio de ayuda de Portal.

Para ingresar el código de Facebook para dispositivos a fin de iniciar sesión en un smart TV, una cámara, una impresora u otro dispositivo, visita la página de Facebook para dispositivos.

Implementa el inicio de sesión con Facebook para dispositivos para permitir que las personas inicien sesión en tu app o servicio con su cuenta de Facebook. Esta función permite que las personas inicien sesión en dispositivos con capacidades de ingreso de datos o visualización limitadas, como smart TV, marcos de fotos digitales o dispositivos de Internet de las cosas.

Con este inicio de sesión, el dispositivo muestra un código alfanumérico y pide a las personas que lo ingresen en una página web desde su computadora o smartphone. Después, la persona que usa la aplicación o el servicio podrá conceder permisos. Una vez obtenidos los permisos, el dispositivo recibe un token de acceso que la aplicación utiliza para realizar solicitudes de API Graph a fin de identificar a la persona, así como para obtener información que permita personalizar la experiencia con el dispositivo.

Si desarrollas una aplicación de TV para Apple TV, Android TV o Fire TV, debes usar el SDK de Facebook para tvOS o el SDK de Facebook para Android.

En esta guía, se describe la integración manual del inicio de sesión para dispositivos sin el uso de los SDK anteriores.

Experiencia del usuario

Estas normas describen cómo diseñar una experiencia de inicio de sesión clara, segura y coherente entre dispositivos y servicios.

1. Llamada a la acción

En primer lugar, piensa en qué fase de la experiencia quieres solicitar a las personas que inicien sesión o se conecten con Facebook. En algunos dispositivos será de inmediato, mientras que en otros lo harás más adelante.

Para asegurarte de que proporcionas la experiencia más útil, coherente y fiable posible, diseña un botón lo más parecido posible al botón oficial "Iniciar sesión con Facebook".

Desde la perspectiva del diseño visual, esto significa que deberías:

  1. Etiquetar el botón con "Iniciar sesión con Facebook" o "Conectar con Facebook".
  2. Utilizar el blanco y el azul oficial de la marca de Facebook: n.º 1877F2.
  3. Si el dispositivo permite la visualización gráfica, también puedes incorporar el logotipo "f" oficial. Según las normas de marca de Facebook, el logotipo siempre deber ser de color blanco o azul de Facebook (n.º 1877F2).

Cuando sea relevante, describe las ventajas de iniciar sesión. Por ejemplo, "descubre lo que están viendo tus amigos" o "mira las fotos de tus álbumes de Facebook".

2. Presentar el código

Cuando alguien hace clic en la llamada a la acción, el dispositivo realiza una llamada a la API de Facebook que devuelve un código.

En tu interfaz, indica a las personas que necesitan visitar un sitio web e ingresar el código usando el siguiente mensaje: "A continuación, visita facebook.com/device (http://facebook.com/device) en tu computadora o smartphone e ingresa este código". Muestra el código completo que recibiste de la API de inicio de sesión para dispositivos de Facebook. El código tiene entre 6 y 12 caracteres de longitud.

Puedes incluir un botón Close o Cancel para que las personas puedan cancelar el proceso de inicio de sesión para dispositivos. Esto hará que vuelvan a la primera pantalla de inicio de sesión.

Cuando el código se muestra en pantalla, el dispositivo consulta la API de inicio de sesión para dispositivos para comprobar si alguien autorizó la aplicación. Si transcurren algunos minutos sin que se introduzca el código, la API de inicio de sesión para dispositivos devuelve un error code_expired. Cuando el dispositivo recibe este error, debes cancelar el proceso de inicio de sesión y la interfaz deberá mostrar la llamada a la acción.

También es posible generar códigos QR con el código del usuario insertado en la URL. Para eso, debes agregar el parámetro user_code a la URL:

https://www.facebook.com/device?user_code=<USER_CODE>

3. Autorización

Este es el proceso que las personas ven cuando visitan facebook.com/device con el navegador de su computadora o smartphone. Primero aparece un campo de texto donde pueden ingresar el código:

Después de ingresar el código y hacer clic en Continue, pueden elegir qué permisos quieren conceder:

De este modo, las personas saben que el inicio de sesión se realizó correctamente y ven un mensaje de confirmación:

4. Confirmar el inicio de sesión

En la interfaz del dispositivo también debería mostrarse un mensaje de confirmación. Lo ideal sería que incluyera el nombre de la persona y, si es posible, su foto del perfil de Facebook.

Muestra esta confirmación en el dispositivo hasta que la persona haga clic en un botón Continue. Alguien podría necesitar ingresar el código desde una computadora en otra ubicación, de modo que necesitaría tiempo para volver al dispositivo y ver la confirmación antes de continuar.

Una vez que la persona haga clic en Continue, el dispositivo ya puede mostrar una atractiva experiencia personalizada.

5. Cerrar sesión o desconectar

Las personas deben poder cerrar sesión desde el dispositivo sin que este guarde la conexión con Facebook. Para ello, proporciona una opción Log out from Facebook o Disconnect from Facebook en el menú del dispositivo.

Cuando se seleccione esta opción, el dispositivo debe borrar el token de acceso guardado en la memoria. Si guardas el token de acceso en una base de datos o en la nube, también debes borrarlo de ahí. No es necesario realizar una llamada a la API para invalidar el token de acceso.

Cuando una persona cierre sesión, el dispositivo debe mostrar la llamada a la acción inicial del paso 1.

Implementación del inicio de sesión para dispositivos

El inicio de sesión con Facebook para dispositivos está diseñado para dispositivos que realizan directamente llamadas HTTP a través de internet. A continuación encontrarás una lista con las llamadas a la API y las respuestas que el dispositivo puede realizar.

1. Activar el inicio de sesión para dispositivos

Carga el panel de tu aplicación. Ve a "Producto > Inicio de sesión con Facebook > Configuración > Iniciar sesión desde dispositivos" y cambia esta última opción a "Sí".

2. Generar un código

Cuando la persona hace clic en la llamada a la acción Connect to Facebook o Log in with Facebook, el dispositivo debe realizar una acción HTTP POST en:

POST https://graph.facebook.com/v2.6/device/login
       access_token=<YOUR_APP_ID|CLIENT_TOKEN>
       scope=<COMMA_SEPARATED_PERMISSION_NAMES> // e.g. public_profile,user_likes
       redirect_uri=<VALID_OAUTH_REDIRECT_URL>

El parámetro scope es opcional y debe contener una lista separada por comas de permisos de inicio de sesión aprobados para su uso en la revisión del inicio de sesión.

El parámetro CLIENT_TOKEN se encuentra en "Configuración > Avanzada" y se debe combinar con el identificador de la aplicación (separado por una barra vertical, |) para formar el access_token completo.

El parámetro redirect_uri es opcional. Cuando proporcionas una URL, se redirigirá a la persona a esta URL después de completar el inicio de sesión correctamente. Esto te permite iniciar la sesión de la persona en el sitio web de tu aplicación para fines de una administración de cuentas más completa. Esta URL debe ser una URL de redireccionamiento de OAuth, tal como se configura en "Configuración > Avanzada". La respuesta tiene esta forma:

{
  "code": "92a2b2e351f2b0b3503b2de251132f47",
  "user_code": "A1NWZ9",
  "verification_uri": "https://www.facebook.com/device",
  "expires_in": 420,
  "interval": 5
}

Esta respuesta significa:

  1. Muestra la cadena "A1NWZ9" en tu dispositivo.
  2. Indica a la persona que vaya a "facebook.com/device" e ingrese el código.
  3. El código caduca en 420 segundos. Si no recibes un token de acceso una vez transcurrido este tiempo, cancela el proceso de inicio de sesión.
  4. El dispositivo debe consultar a la API de inicio de sesión para dispositivos cada cinco segundos para ver si la autorización se realizó correctamente.

3. Presentar el código

El dispositivo debe mostrar el user_code e indicar a la persona que debe visitar la verification_uri, por ejemplo, facebook.com/device, con su computadora o smartphone. Consulta Experiencia del usuario.

4. Consultar la autorización

El dispositivo debe consultar la API de inicio de sesión para dispositivos para comprobar si la persona autorizó correctamente a la aplicación. Esto se debe hacer con el valor de interval indicado en la respuesta a tu llamada del paso 1, que es de cinco segundos. El dispositivo debe consultar:

POST https://graph.facebook.com/v2.6/device/login_status
       access_token=<YOUR_APP_ID|CLIENT_TOKEN>
       code=<LONG_CODE_FROM_STEP_1> // e.g. "92a2b2e351f2b0b3503b2de251132f47"

La respuesta a esta llamada a la API depende del punto del proceso de autorización en el que se encuentra la persona. Recibirás un token de acceso o un objeto de error con un subcódigo específico para analizar:

Subcódigo de error Ejemplo de respuesta Significado

N/A

{"access_token": "ABCD...", "expires_in" : 5183996 }

El usuario autorizó correctamente el dispositivo. Ahora, el dispositivo puede utilizar el valor de access_token para realizar llamadas a la API autorizadas.

1349174

{"error":{"message":"This request requires the user to take a pending action","code":31,"error_subcode":1349174,"error_user_title":"Device Login Authorization Pending","error_user_msg":"User has not yet authorized your application. Continue polling."}}

El usuario aún no concede autorización a la aplicación. Sigue consultando con la frecuencia especificada en la respuesta del paso 1.

1349172

{"error":{"message":"User request limit reached","code":17,"error_subcode":1349172,"error_user_title":"OAuth Device Excessive Polling","error_user_msg":"Your device is polling too frequently. Space your requests with a minium interval of 5 seconds."}}

El dispositivo consulta con demasiada frecuencia. Reduce las consultas hasta el intervalo especificado en la primera llamada a la API.

1349152

{"error":{"message":"The session has expired""code":463,"error_subcode":1349152, "error_user_title":"Activation Code Expired","error_user_msg":"The code you entered has expired. Please go back to your device for a new code and try again."}}

El código del dispositivo caducó. Cancela el proceso de inicio de sesión para dispositivos y dirige al usuario a la pantalla inicial.

5. Confirmar el inicio de sesión

Cuando recibes un token de acceso, significa que la persona autorizó correctamente la aplicación. Debes conservar este token de acceso en el dispositivo.

Para que la persona sepa que el proceso se completó correctamente, el dispositivo debe mostrar su nombre y foto del perfil (si está disponible), hasta que este haga clic en Continue. Para obtener el nombre y la foto del perfil de la persona, el dispositivo debe realizar una llamada estándar a la API Graph:

GET https://graph.facebook.com/v2.3/me?
      fields=name,picture&amp;
      access_token=<USER_ACCESS_TOKEN>

Se obtiene una respuesta con la forma:

{
  "name": "John Doe", 
  "picture": {
    "data": {
      "is_silhouette": false, 
      "url": "https://fbcdn.akamaihd.net/hmac...ile.jpg"
    }
  }, 
  "id": "2023462875238472"
}

Muestra el nombre y la foto del perfil de la persona hasta que haga clic en Continue en el dispositivo.

6. Almacenar tokens de acceso

El dispositivo debe conservar el token de acceso para realizar otras solicitudes a la API Graph.

Los tokens de inicio de sesión para dispositivos pueden tener una validez de hasta 60 días, aunque pueden perderla en distintas situaciones. Por ejemplo, cuando una persona cambia su contraseña de Facebook, su token de acceso queda invalidado.

Si el token no es válido, el dispositivo debe borrarlo de su memoria. La persona debe llevar a cabo de nuevo el proceso de inicio de sesión para dispositivos desde el paso 1 para obtener un nuevo token válido.

Solución de problemas

¿Puedo hacer solicitudes de proceso de dispositivo a través de HTTP?
OAuth 2 requiere TLS/HTTPS.

¿Puedo realizar solicitudes de proceso de dispositivo con el método GET?
Todas las solicitudes de proceso de dispositivo deben ser POST.

¿Cómo puedo actualizar el token de acceso de inicio de sesión para dispositivos?
Los tokens de acceso de inicio de sesión para dispositivos pueden tener una validez de hasta 60 días.

Si el token no es válido, el dispositivo debe borrarlo de su memoria. La persona debe llevar a cabo de nuevo el proceso de inicio de sesión para dispositivos descrito en el paso 1 para obtener un nuevo token válido.

Para obtener más información sobre la actualización de tokens, consulta Tokens de acceso.

Obtengo un error Invalid API method al realizar una solicitud POST, ¿cuál es el problema?
Si realizas una solicitud POST y recibes un error como este:

{"error":{"message":"Invalid API method","type":"OAuthException","code":3}}

Es posible que debas activar en tu app el inicio de sesión desde dispositivos.

Carga el panel de tu aplicación. Ve a "Producto > Inicio de sesión con Facebook > Configuración > Iniciar sesión desde dispositivos" y configura esta última opción en "Sí".

El token de acceso de inicio de sesión para mi dispositivo no es válido. ¿Qué hago?
Si el token de acceso no es válido, el dispositivo debe borrarlo de su memoria y obtener un nuevo token. La persona debe llevar a cabo de nuevo el proceso de inicio de sesión para dispositivos descrito en el paso 1 para obtener un nuevo token válido.