Este documento apresenta um passo a passo para implementar o Login do Facebook na sua página da web com o SDK do Facebook para JavaScript.
Se você for um usuário do Facebook e estiver com problemas para fazer login em sua conta, visite nossa Central de Ajuda.
Você precisará do seguinte:
Se por alguma razão você não conseguir usar nosso SDK para JavaScript, será possível implementar o Login do Facebook compilando um fluxo de login manualmente.
No Painel de Aplicativos, escolha seu aplicativo e navegue até Adicionar um produto e clique em Configurar no cartão de Login do Facebook. No lado esquerdo do painel de navegação, selecione Configurações abaixo de Configurações OAuth do cliente. Em seguida, insira seu URL de redirecionamento no campo URIs de redirecionamento OAuth válidos para concluir a autorização com sucesso.
Depois que sua página da web carregar, o primeiro passo é descobrir se a pessoa já está conectada à sua página com o Login do Facebook. Uma chamada para FB.getLoginStatus inicia uma chamada para o Facebook a fim de obter o status do login. Depois, o Facebook faz uma chamada para sua função de retorno de chamadas e fornece o resultado.
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});{
status: 'connected',
authResponse: {
accessToken: '{access-token}',
expiresIn:'{unix-timestamp}',
reauthorize_required_in:'{seconds-until-token-expires}',
signedRequest:'{signed-parameter}',
userID:'{user-id}'
}
}status especifica o status de login da pessoa que está acessando a página da web. O status pode ser um dos seguintes:
Status Tipo | Descrição |
|---|---|
| A pessoa está conectada ao Facebook e fez login em sua página da web. |
| A pessoa está conectada ao Facebook, mas não fez login em sua página da web. |
| A pessoa não está conectada ao Facebook, portanto não se sabe se ela fez login em sua página da web. Ou o FB.logout() foi chamado antes e, portanto, não pode se conectar ao Facebook. |
Se o status for connected, os seguintes parâmetros authResponse serão incluídos à resposta:
Parâmetros authResponse | Valor |
|---|---|
| Um token de acesso para a pessoa que está acessando a página da web. |
| Um carimbo UNIX de data/hora quando o token expirar. Quando o token expirar, a pessoa precisará fazer login novamente. |
| O tempo restante em segundos até o login expirar e a pessoa precisar fazer login novamente. |
| Um parâmetro assinado, contendo informações sobre a pessoa que está acessando sua página da web. |
| O número de identificação da pessoa acessando sua página da web. |
O SDK para JavaScript detecta o status de login automaticamente. Portanto, não é necessário fazer nada para habilitar esse comportamento.
Se uma pessoa acessar sua página sem estar conectada a ela nem ao Facebook, você pode usar a caixa de diálogo Entrar para solicitar que ela faça login em ambos. Se a pessoa não estiver conectada ao Facebook, será solicitado que ela entre na plataforma e, em seguida, faça login em sua página da web.
Existem duas maneiras de conectar uma pessoa:
Para usar o botão Login do Facebook, use nosso Configurador de plugin para personalizar o botão e obter o código.
Para usar seu próprio botão de login, invoque o diálogo Entrar com uma chamada para FB.login().
FB.login(function(response){
// handle the response
});Quando uma pessoa clicar no seu botão HTML, uma janela pop-up com o diálogo Entrar será exibida. Esse diálogo permite que você solicite permissão para acessar os dados de uma pessoa. É possível passar o parâmetro scope ao realizar a chamada da função FB.login(). Esse parâmetro opcional é uma lista de permissões, separadas por vírgulas, que a pessoa precisa confirmar para que sua página da web acesse os dados da pessoa.
Este exemplo pergunta se a sua página tem permissão para acessar o perfil público e o email de uma pessoa que está fazendo login em sua página da web.
FB.login(function(response) {
// handle the response
}, {scope: 'public_profile,email'});A resposta, que pode ser conectar-se ou cancelar, retorna um objeto authResponse ao retorno de chamada especificado quando você fez a chamada FB.login(). Esta resposta pode ser detectada e tratada dentro da chamada FB.login().
FB.login(function(response) {
if (response.status === 'connected') {
// Logged into your webpage and Facebook.
} else {
// The person is not logged into your webpage or we are unable to tell.
}
});Desconecte uma pessoa de sua página anexando a função do SDK para JavaScript FB.logout() a um botão ou link.
FB.logout(function(response) {
// Person is now logged out
});Nota: essa chamada da função também pode desconectar a pessoa do Facebook.
Além disso, sair da sua página da web não revoga as permissões concedidas pela pessoa ao fazer login em sua página. É necessário revogar permissões separadamente. Compile sua página da web de maneira que uma pessoa que sair de sua página não veja o diálogo Entrar quando fizer login novamente.
Esse código carrega e inicializa o SDK para JavaScript em sua página HTML. Substitua {app-id} pelo ID do aplicativo e {api-version} pela versão da Graph API a ser utilizada. Exceto quando você tiver um motivo específico para usar uma versão mais antiga, especifique a versão mais recente: v5.0.
<!DOCTYPE html>
<html>
<head>
<title>Facebook Login JavaScript Example</title>
<meta charset="UTF-8">
</head>
<body>
<script>
function statusChangeCallback(response) { // Called with the results from FB.getLoginStatus().
console.log('statusChangeCallback');
console.log(response); // The current login status of the person.
if (response.status === 'connected') { // Logged into your webpage and Facebook.
testAPI();
} else { // Not logged into your webpage or we are unable to tell.
document.getElementById('status').innerHTML = 'Please log ' +
'into this webpage.';
}
}
function checkLoginState() { // Called when a person is finished with the Login Button.
FB.getLoginStatus(function(response) { // See the onlogin handler
statusChangeCallback(response);
});
}
window.fbAsyncInit = function() {
FB.init({
appId : '{app-id}',
cookie : true, // Enable cookies to allow the server to access the session.
xfbml : true, // Parse social plugins on this webpage.
version : '{api-version}' // Use this Graph API version for this call.
});
FB.getLoginStatus(function(response) { // Called after the JS SDK has been initialized.
statusChangeCallback(response); // Returns the login status.
});
};
(function(d, s, id) { // Load the SDK asynchronously
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "https://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
function testAPI() { // Testing Graph API after login. See statusChangeCallback() for when this call is made.
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
console.log('Successful login for: ' + response.name);
document.getElementById('status').innerHTML =
'Thanks for logging in, ' + response.name + '!';
});
}
</script>
// The JS SDK Login Button
<fb:login-button scope="public_profile,email" onlogin="checkLoginState();">
</fb:login-button>
<div id="status">
</div>
</body>
</html>