Inicio de sesión con Facebook para dispositivos

Si estás buscando ayuda para tu portal de Facebook, visita el servicio de ayuda del portal.

Si quieres introducir el código de Facebook para dispositivos para iniciar sesión en tu smart TV, cámara, impresora y demás dispositivos, visita la página de Facebook para dispositivos.

Implementa el inicio de sesión con Facebook para dispositivos para que los usuarios puedan iniciar sesión en tu aplicación o servicio a través de su cuenta de Facebook. Esta función permite que los usuarios inicien sesión en dispositivos con funcionalidades limitadas de entrada o visualización, como smart TV, marcos de fotos digitales o dispositivos IoT ("Internet of Things").

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

Si vas a crear una aplicación de TV para Apple TV, Android TV o Fire TV, debes utilizar 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 usar los SDK anteriores.

Experiencia del usuario

En estas directrices se describe 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 la persona que inicie sesión o se conecte 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 el botón de modo que se parezca tanto como puedas al botón oficial "Iniciar sesión" de 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 (#1877F2).
  3. Si el dispositivo permite la visualización gráfica, también puedes incorporar el logotipo “f” oficial. Según las directrices de marca de Facebook, este siempre debería ser de color blanco o azul de Facebook (#1877F2).

Cuando sea relevante, describe los beneficios de iniciar sesión; por ejemplo: "Descubre lo que están viendo tus amigos" o "Mira las fotos de tus álbumes de Facebook".

2. Visualización del 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 deben visitar un sitio web e introducir el código usando el siguiente mensaje: “A continuación, visita facebook.com/device (http://facebook.com/device) en tu ordenador o smartphone e introduce este código”. Muestra el código completo que has recibido 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 la persona pueda cancelar el proceso de inicio de sesión para dispositivos. Esta acción debe llevarla de vuelta a la pantalla inicial 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 ha autorizado la aplicación. Si tras unos minutos no se ha introducido 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 se pueden generar códigos QR con el código de usuario insertado en la URL. Para hacerlo, añade el parámetro user_code a la URL de la siguiente forma:

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

3. Autorización

Este es el proceso que ve alguien cuando visita facebook.com/device en el navegador de su ordenador o smartphone. Primero aparece un campo de texto donde puede introducir el código:

Tras introducirlo y hacer clic en Continue, puede elegir qué permisos concede:

De este modo, la persona sabe que el inicio de sesión se ha realizado correctamente y ve un mensaje de confirmación:

4. Confirmación del 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 y, si es posible, la foto del perfil de Facebook de la persona.

Muestra esta confirmación en el dispositivo hasta que la persona haga clic en el botón Continue. Es posible que algunas personas deban introducir el código desde un ordenador en otra ubicación, de modo que pueden necesitar tiempo para volver al dispositivo y ver la confirmación antes de continuar.

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

5. Cierre de sesión o desconexión

Es necesario que las personas puedan cerrar sesión desde el dispositivo y que este no 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 identificador de acceso guardado en la memoria. Si guardas el identificador de acceso en una base de datos o en la nube, también debes borrarlo ahí. No es necesario realizar una llamada a la API para invalidar el identificador de acceso.

Cuando un usuario cierra sesión, el dispositivo debería 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. Activación del inicio de sesión para dispositivos

Carga el panel de la aplicación y sigue estos pasos: Producto > Inicio de sesión con Facebook > Configuración > Inicio de sesión desde dispositivos. Cambia esta última opción a “Sí”.

2. Generación de 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 solicitud HTTP POST:

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.

CLIENT_TOKEN se encuentra en Configuración de la aplicación -> Opciones avanzadas y debe combinarse con el identificador de la aplicación (separado con una barra vertical, |) para formar el parámetro access_token completo.

El parámetro redirect_uri es opcional. Cuando suministres una URL, la persona será redirigida a la misma tras completar correctamente el inicio de sesión. Esto te permite iniciar la sesión de la persona en el sitio web de tu aplicación para que administre su cuenta. Debe tratarse de una URL de redirección OAuth válida, tal como está configurada en Configuración de la aplicación -> Opciones avanzadas. La respuesta tiene el formato siguiente:

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

Con esta respuesta:

  1. Se muestra la cadena "A1NWZ9" en tu dispositivo.
  2. Se indica a la persona que vaya a "facebook.com/device" y especifique el código.
  3. El código caduca en 420 segundos. Pasado este tiempo, debes cancelar el proceso de inicio de sesión si no recibes un identificador de acceso.
  4. El dispositivo debe consultar la API de inicio de sesión para dispositivos cada cinco segundos, para ver si la autorización se ha realizado correctamente.

3. Visualización del código

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

4. Consulta de autorización

El dispositivo debe consultar la API de inicio de sesión para dispositivos para comprobar si la persona ha autorizado correctamente la aplicación. Debe hacerse con la frecuencia que indica el elemento interval incluido en la respuesta a tu llamada del paso 1, que tiene un valor de cinco segundos. El dispositivo debe consultar lo siguiente:

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 encuentre la persona. Recibirás el identificador de acceso o un objeto de error con un subcódigo concreto que se debe analizar:

Subcódigo de error Ejemplo de respuesta Significado

N/A

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

El usuario ha autorizado correctamente el dispositivo. Ahora, el dispositivo puede utilizar el valor access_token para realizar llamadas autorizadas a la API.

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 ha autorizado la aplicación. Sigue realizando consultas 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 realiza consultas 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 ha caducado. Cancela el proceso de inicio de sesión para dispositivos y devuelve al usuario a la pantalla inicial.

5. Confirmación del inicio de sesión

Cuando recibes un identificador de acceso, la persona ha autorizado correctamente la aplicación. Debes conservar este identificador de acceso en el dispositivo.

Para que la persona sepa que el proceso se ha completado correctamente, el dispositivo debe mostrar su nombre y foto del perfil (si está disponible), hasta que haga clic en Continue. Para obtener el nombre y la foto del perfil de esta 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 el formato siguiente:

{
  "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 esta persona hasta que esta haga clic en Continue en el dispositivo.

6. Almacenamiento de identificadores de acceso

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

Los identificadores de acceso de inicio de sesión para dispositivos pueden tener una validez de hasta 60 días, pero pueden quedar invalidados en distintas situaciones. Por ejemplo, cuando una persona cambia su contraseña de Facebook, su identificador de acceso queda invalidado.

Si el identificador 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 identificador válido.

Solución de problemas

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

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

¿Cómo actualizo el identificador de acceso de inicio de sesión para dispositivos?
Los identificadores de inicio de sesión para dispositivos pueden tener una validez de hasta 60 días.

Si el identificador 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 identificador válido.

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

Obtengo un error Invalid API method al realizar una solicitud POST. ¿Cuál puede ser el problema?
Si realizas una solicitud POST, puede generarse un error como este:

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

Es posible que debas habilitar en tu aplicación el inicio de sesión desde dispositivos.

Carga el panel de la aplicación y sigue estos pasos: Producto > Inicio de sesión con Facebook > Configuración > Inicio de sesión desde dispositivos. Cambia esta última opción a “Sí”.

Mi identificador de acceso de inicio de sesión para dispositivos no es válido. ¿Qué hago?
Si el identificador de acceso no es válido, el dispositivo debe borrarlo de su memoria y obtener uno nuevo. 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 identificador válido.