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.
Você precisará do seguinte:
A amostra de código a seguir mostra como adicionar o SDK do Facebook para JavaScript ao seu site, inicializar o SDK, além de exibir seu nome e seu email caso você tenha feito login no Facebook. Se você não tiver feito login, uma janela pop-up com o diálogo Entrar será exibida automaticamente.
A permissão public_profile , que possibilita o acesso a informações disponíveis publicamente (como nome e foto do perfil), e a permissão email não exigem a análise do app e são concedidas de forma automática a todos os apps com o Login do Facebook.
<!DOCTYPE html> <html lang="en"> <head></head> <body> <h2>Add Facebook Login to your webpage</h2> <!-- Set the element id for the JSON response --> <p id="profile"></p> <script> <!-- Add the Facebook SDK for Javascript --> (function(d, s, id){ 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') ); window.fbAsyncInit = function() { <!-- Initialize the SDK with your app and the Graph API version for your app --> FB.init({ appId : '{your-facebook-app-id}', xfbml : true, version : '{the-graph-api-version-for-your-app}' }); <!-- If you are logged in, automatically get your name and email adress, your public profile information --> FB.login(function(response) { if (response.authResponse) { console.log('Welcome! Fetching your information.... '); FB.api('/me', {fields: 'name, email'}, function(response) { document.getElementById("profile").innerHTML = "Good to see you, " + response.name + ". i see your email address is " + response.email }); } else { <!-- If you are not logged in, the login dialog will open for you to login asking for permission to get your public profile and email --> console.log('User cancelled login or did not fully authorize.'); } }); }; </script> </body> </html>
No Painel de Apps, escolha seu app e navegue até Adicionar um produto. Depois, clique em Configurar no cartão do Login do Facebook. No lado esquerdo do painel de navegação, selecione Configurações. Em Configurações de OAuth do cliente, insira a URL de redirecionamento no campo URIs de redirecionamento do OAuth válidos para concluir a autorização com sucesso.
Altere a opção Login com o SDK para JavaScript para "sim" se quiser indicar que você está usando esse SDK. Depois, insira o domínio da sua página que hospeda o SDK na lista Domínios permitidos para o SDK para JavaScript. Isso garante que os tokens de acesso façam o retorno de chamada apenas em domínios autorizados. Somente páginas HTTPS têm suporte para ações de autenticação com o SDK do Facebook para JavaScript.
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}' } }
O status
especifica o status de login da pessoa que está acessando a página da web. O status
pode ser um dos seguintes:
Tipo de Status | Descrição |
---|---|
| A pessoa está conectada ao Facebook e fez login na sua página da web. |
| A pessoa está conectada ao Facebook, mas não fez login na sua página da web. |
| A pessoa não está conectada ao Facebook, portanto não se sabe se ela fez login na sua página da web. Ou 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 na 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, nenhuma ação é necessária para habilitar esse comportamento.
Se uma pessoa acessar sua página sem estar conectada a ela nem ao Facebook, você poderá usar o diálogo Entrar para solicitar que esse usuário faça login em ambos. Se a pessoa não estiver conectada ao Facebook, será solicitado que ela entre na plataforma e, depois, faça login na sua página da web.
Existem duas maneiras de conectar uma pessoa:
Para usar o botão Entrar 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 a página da web acesse os dados dela. Para ser usado por usuários externos, o Login do Facebook exige a permissão avançada public_profile.
Este exemplo pergunta se a página tem permissão para acessar o perfil público e o email de uma pessoa que está fazendo login na 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ê chamou FB.login()
. Essa resposta pode ser detectada e gerenciada 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 da 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 });
Observação: 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 na sua página. É necessário revogar permissões separadamente. Compile sua página da web de maneira que uma pessoa que sair da sua página não veja o diálogo Entrar quando fizer login novamente.
Esse código carrega e inicializa o SDK para JavaScript na sua página HTML. Substitua {app-id}
pelo ID do app 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: v21.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 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> <!-- Load the JS SDK asynchronously --> <script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js"></script> </body> </html>