Login do Facebook para Dispositivos

Caso você precise de ajuda com seu Portal do Facebook, acesse a Central de Ajuda do Portal.

Para inserir seu código do Facebook para Dispositivos para fazer login em smart TVs, câmeras, impressoras ou outros dispositivos, acesse a página do Facebook para Dispositivos.

Implemente o Login do Facebook para Dispositivos para permitir que as pessoas façam login em seu aplicativo ou serviço usando suas contas do Facebook. Esse recurso permite que as pessoas façam login em dispositivos com entrada ou capacidade de display limitadas, como smart TVs, porta-retratos digitais ou dispositivos da Internet das Coisas.

Com o login no dispositivo, o dispositivo mostra um código alfanumérico e instrui as pessoas a inseri-lo em uma página da web no computador ou smartphone. As pessoas que usam seu aplicativo ou serviço podem então conceder permissões. Depois que seu aplicativo recebe as permissões, o dispositivo recebe um token de acesso que seu aplicativo usa para fazer solicitações da Graph API para identificar a pessoa e obter informações para personalizar a experiência dela com o dispositivo.

Se você estiver criando um aplicativo para Apple TV, Android TV ou Fire TV, deverá usar nosso SDK do Facebook para tvOS ou SDK do Facebook para Android.

Este guia descreve a integração manual do login no dispositivo sem o uso dos SDKs acima.

Experiência do usuário

Estas diretrizes descrevem como criar uma experiência simples, segura e consistente de login em dispositivos e serviços.

1. Chamada para ação

Primeiro, considere em que momento da experiência do usuário você quer pedir às pessoas para fazer login ou se conectar com o Facebook. Para alguns dispositivos isso ocorrerá imediatamente, e para outros pode ser mais adiante durante a experiência.

Para garantir uma experiência do usuário mais utilizável, consistente e confiável, crie o botão para ser o mais parecido possível com o botão oficial de Login do Facebook.

De uma perspectiva de design visual, isso significa que você deve

  1. Rotular o botão com "Entrar com o Facebook" ou "Conecte-se ao Facebook".
  2. Use branco e o azul oficial da marca Facebook: #1877F2.
  3. Se o dispositivo for compatível com visualização gráfica, também será possível incorporar o logotipo oficial "f". De acordo com as diretrizes da marca do Facebook, o logotipo deve ser sempre branco ou azul Facebook (#1877F2).

Quando for o caso, descreva as vantagens do login. Por exemplo, "descubra o que seus amigos estão assistindo" ou "veja fotos dos álbuns do Facebook".

2. Exibir o código

Quando alguém clica na chamada para ação, o dispositivo faz uma chamada para a API do Facebook que retorna um código.

Em sua interface, diga às pessoas que elas precisam visitar um site e inserir o código com a seguinte mensagem: "Em seguida, visite facebook.com/device (http://facebook.com/device) em seu computador ou smartphone e insira este código". Exiba o código completo que você recebeu da API de Login no Dispositivo do Facebook. O código tem entre 6 e 12 caracteres.

Você pode incluir um botão Close ou Cancel para que as pessoas possam cancelar o fluxo de login no dispositivo. Isso deve redirecioná-las para a tela de login inicial.

Quando o código é exibido na tela, seu dispositivo consulta a API de Login no Dispositivo para ver se alguém autorizou seu aplicativo. Depois de alguns minutos, se o código não tiver sido inserido, a API de Login no Dispositivo retorna um erro code_expired. Quando o dispositivo recebe esse erro, é necessário cancelar o fluxo de login e a interface deve exibir a chamada para ação.

Os códigos QR também podem ser gerados com o código do usuário incorporado na URL. Isso ocorre ao adicionar o parâmetro user_code à url:

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

3. Autorização

É o fluxo visto pelos usuários quando eles acessam facebook.com/device no computador ou navegador móvel. Primeiro eles veem um campo de texto onde podem inserir o código:

Depois de inserir o código e clicar em Continue, eles podem escolher as permissões que desejam conceder:

As pessoas recebem uma mensagem de confirmação para saberem que o processo de login foi bem-sucedido:

4. Confirmar login bem-sucedido

Na interface do seu dispositivo, você também deve exibir uma mensagem de confirmação. O ideal seria incluir o nome da pessoa e, se possível, a foto do perfil do Facebook.

Veja essa confirmação no seu dispositivo até a pessoa clicar em um botão Continue. Alguém pode precisar inserir o código em um computador em outro local, então talvez precise de tempo para voltar ao dispositivo e ver a confirmação antes de continuar.

Depois que o usuário clica em Continue, o dispositivo pode então mostrar uma experiência fantástica e personalizada.

5. Sair ou desconectar

As pessoas devem conseguir sair do seu dispositivo, e seu dispositivo não deve armazenar a conexão delas com o Facebook. Para fazer isso, ofereça uma opção Log out from Facebook ou Disconnect from Facebook no menu do seu dispositivo.

Quando alguém escolhe essa opção, o dispositivo deve excluir o token de acesso guardado na sua memória. Se você armazenar o token de acesso em um banco de dados ou armazenamento em nuvem, também deverá removê-lo de lá. Não é necessário fazer uma chamada de API para invalidar o token de acesso.

Depois que alguém sair, o dispositivo deve exibir a chamada para ação inicial na Etapa 1.

Implementar o Login para Dispositivos

O Login no Facebook para Dispositivos é para dispositivos que fazem chamadas HTTP diretamente através da Internet. A seguir estão as chamadas de API e as respostas que seu dispositivo pode dar.

1. Ativar o Login para Dispositivos

Carregue o painel do aplicativo e altere Produtos > Login no Facebook > Configurações > Login de Dispositivos para "Sim".

2. Gerar um código

Quando o usuário clica na chamada para ação Connect to Facebook ou Log in with Facebook, seu dispositivo deve fazer um HTTP POST para:

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>

O parâmetro scope é opcional e deve conter uma lista separada por vírgulas de Permissões de Login que são aprovadas para uso na Análise de Login.

O CLIENT_TOKEN encontra-se em suas Configurações do aplicativo -> Avançadas, e deve ser combinado com o ID do seu aplicativo (separado por uma barra vertical, |) para formar o access_token completo.

O redirect_uri é um parâmetro opcional. Quando você fornece uma URL, a pessoa é redirecionada para a URL depois de concluir o login com sucesso. Isso permite conectar a pessoa ao site do seu aplicativo para gerenciamento adicional da conta. Essa URL deve ser uma URL de redirecionamento do OAuth válida conforme configurado em Configurações do aplicativo -> Avançadas. A resposta está neste formato:

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

Essa resposta significa:

  1. Exibir a cadeia de caracteres "A1NWZ9" no seu dispositivo
  2. Dizer à pessoa para acessar "facebook.com/device" e inserir este código
  3. O código expira em 420 segundos. Você precisa cancelar o fluxo de login após esse tempo se não receber um token de acesso
  4. O dispositivo deve consultar a API de Login no Dispositivo a cada 5 segundos para ver se a autorização foi bem-sucedida.

3. Exibir o código

O dispositivo deve apresentar o user_code e dizer às pessoas para visitar a verification_uri como facebook.com/device no PC ou smartphone. Consulte Experiência do usuário.

4. Sondar autorização

O dispositivo deve sondar a API de Login no Dispositivo para ver se a pessoa autorizou o seu aplicativo com sucesso. Faça isso no interval da resposta à sua chamada na Etapa 1, que é a cada cinco segundos. O dispositivo deve 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"

A resposta a essa chamada de API depende de onde a pessoa está no fluxo de autorização. Você vai receber acesso ao token ou um objeto de erro com um subcódigo específico para analisar:

Subcódigo de erro Exemplo de resposta Significado

N/A

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

O usuário autorizou o dispositivo com sucesso. Agora, o dispositivo pode usar o valor do access_token para fazer chamadas de 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."}}

O usuário ainda não autorizou o seu aplicativo. Continue sondando à taxa especificada na resposta na Etapa 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."}}

Seu dispositivo está sondando com muita frequência. Reduzir a sondagem para o intervalo especificado na primeira chamada de 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."}}

O código do dispositivo expirou. Cancele o fluxo de login no dispositivo e redirecione o usuário para a tela inicial.

5. Confirmar login bem-sucedido

Quando você recebe um token de acesso, a pessoa autorizou seu aplicativo com êxito. Mantenha esse token de acesso no dispositivo.

Uma vez que as pessoas sabem que o processo de login foi bem-sucedido, seu dispositivo deverá mostrar o nome da pessoa e, se disponível, uma foto do perfil antes de clicar em Continue. Para obter o nome e a foto do perfil da pessoa, o dispositivo deverá fazer uma chamada padrão da Graph API:

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

Você receberá uma resposta no formato:

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

Indique o nome e a foto do perfil da pessoa antes de clicar em Continue no seu dispositivo.

6. Armazenar tokens de acesso

Seu dispositivo deve manter o token de acesso para fazer outras solicitações para a Graph API.

Tokens de acesso do login no dispositivo podem ser válidos por até 60 dias, mas podem ser invalidados em uma série de situações. Por exemplo, quando uma pessoa muda a senha do Facebook dela, o token de acesso é invalidado.

Se o token é inválido, o dispositivo deverá excluir o token de sua memória. A pessoa que usa o dispositivo precisa executar novamente o fluxo do login no dispositivo desde a Etapa 1 para recuperar um token novo e válido.

Solução de problemas

Posso fazer solicitações de fluxo do dispositivo por meio de HTTP?
OAuth 2 requer TLS/HTTPS.

Posso fazer solicitações de fluxo do dispositivo com o método GET?
Todas as solicitações de fluxo do dispositivo devem ser solicitações POST.

Como posso atualizar meu token de acesso de login no dispositivo?
Tokens de acesso do login no dispositivo podem ser válidos por até 60 dias.

Se o token é inválido, o dispositivo deverá excluir o token de sua memória. A pessoa que usa o dispositivo precisa executar novamente o fluxo do login no dispositivo como descrito na Etapa 1 para recuperar um token novo e válido.

Para saber mais sobre como atualizar tokens, consulte Tokens de Acesso.

Estou recebendo um erro Invalid API method ao fazer uma solicitação POST. O que está errado?
Se você fizer uma solicitação POST e receber um erro como este:

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

Talvez você precise ativar o Login de Dispositivos em seu aplicativo.

Carregue o painel do aplicativo e defina Produtos > Login no Facebook > Configurações > Login de Dispositivos para "Sim".

Meu token de acesso de login no dispositivo é inválido. O que devo fazer?
Se o token de acesso for inválido, o dispositivo deverá excluir o token de sua memória e obter um novo token. A pessoa que usa o dispositivo precisa executar novamente o fluxo do login no dispositivo como descrito na Etapa 1 para recuperar um token novo e válido.