Questo documento descrive i passaggi dell'implementazione di Facebook Login con l'SDK di Facebook per JavaScript sulla tua pagina web.
Ecco di cosa avrai bisogno:
Il seguente esempio di codice mostra come aggiungere l'SDK di Facebook per Javascript alla tua pagina web, inizializzare l'SDK e, se hai effettuato l'accesso a Facebook, visualizzerai il tuo nome e la tua e-mail. Se non hai effettuato l'accesso a Facebook, verrà automaticamente visualizzata la finestra pop-up Accedi.
L'autorizzazione public_profile , che ti consente di ottenere informazioni pubbliche come il nome e l'immagine del profilo, e l'autorizzazione email non richiedono l'analisi dell'app e sono concesse automaticamente a tutte le app che utilizzano Facebook Login.
<!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>
Nella Dashboard gestione app, scegli la tua app e scorri fino ad Aggiungi un prodotto. Clicca su Configura nella scheda Facebook Login. Seleziona Impostazioni nel pannello di navigazione a sinistra e in Impostazioni del client OAuth, inserisci l'URL di reindirizzamento nel campo URI di reindirizzamento OAuth validi per una corretta autorizzazione.
Indica che stai utilizzando l'SDK di JavaScript per effettuare l'accesso impostando il pulsante Login con l'SDK di Javascript su "sì" e inserisci il dominio della tua Pagina che ospita l'SDK nella lista Domini consentiti per l'SDK JavaScript. Ciò garantisce che i token d'accesso siano restituiti solo a callback all'interno di domini autorizzati. Per azioni di autenticazione con l'SDK JavaScript di Facebook, sono supportate solo le pagine https.
Il primo passaggio da eseguire durante il caricamento della tua pagina web è stabilire se un utente ha già effettuato l'accesso alla tua pagina web con Facebook Login. Una chiamata a FB.getLoginStatus
attiva una chiamata a Facebook per ottenere lo stato d'accesso. Facebook chiama poi la tua funzione di callback con i risultati.
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
specifica lo stato di accesso dell'utente che sta usando la pagina web. Lo status
può essere uno dei seguenti:
Tipo di Status | Descrizione |
---|---|
| L'utente ha effettuato l'accesso a Facebook e alla tua pagina web. |
| L'utente ha effettuato l'accesso a Facebook, ma non alla tua pagina web. |
| Poiché l'utente non ha effettuato l'accesso a Facebook, non sai se ha effettuato o meno l'accesso alla tua pagina web. Oppure FB.logout() è stato chiamato in precedenza e, di conseguenza, non può accedere a Facebook. |
Se lo stato è connected
, i seguenti parametri authResponse
sono inclusi nella risposta:
Parametri authResponse | Valore |
---|---|
| Un token d'accesso dell'utente che sta usando la pagina web. |
| Un'indicazione temporale UNIX alla scadenza del token. Alla scadenza del token, l'utente dovrà effettuare nuovamente l'accesso. |
| Il tempo rimanente, in secondi, prima che scada l'accesso e che l'utente debba effettuare nuovamente l'accesso. |
| Un parametro firmato contenente informazioni su chi sta usando la pagina web. |
| L'ID dell'utente che sta usando la pagina web. |
Poiché l'SDK JavaScript rileva automaticamente lo stato d'accesso, non è necessario che tu esegua ulteriori operazioni per abilitare questo comportamento.
Se un utente apre la tua pagina web ma non ha effettuato l'accesso alla pagina o a Facebook, puoi utilizzare la finestra di dialogo Accedi per richiedere all'utente di effettuare l'accesso a entrambi. Se non ha effettuato l'accesso a Facebook, l'utente riceverà la richiesta di accedere prima a Facebook e poi alla tua pagina web.
Puoi consentire agli utenti di effettuare l'accesso in due modi:
Per usare il pulsante Facebook Login, utilizza il nostro Configuratore del plug-in per personalizzare il pulsante Accedi e ottenere il codice.
Per usare il tuo pulsante di accesso personale, richiama la finestra di dialogo Accedi chiamando FB.login()
.
FB.login(function(response){ // handle the response });
Quando un utente clicca sul tuo pulsante HTML, viene mostrata una finestra pop-up contenente la finestra di dialogo Accedi. La finestra di dialogo consente di chiedere l'autorizzazione per accedere ai dati di un utente. Puoi passare il parametro scope
insieme alla chiamata alla funzione FB.login()
. Questo parametro opzionale è una lista di autorizzazioni, separate da virgole, che una persona deve confermare per consentire alla tua pagina web di accedere ai propri dati. Facebook Login richiede l'autorizzazione advanced public_profile, che deve essere utilizzata da utenti esterni.
Questo esempio chiede all'utente che effettua l'accesso se la tua pagina web può essere autorizzata ad accedere al suo profilo pubblico e alla sua e-mail.
FB.login(function(response) { // handle the response }, {scope: 'public_profile,email'});
La risposta, che sia per connettersi o per annullare l'operazione, restituisce un oggetto authResponse
al callback specificato quando hai chiamato FB.login()
. Puoi individuare e gestire la risposta nella chiamata 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. } });
Disconnetti un utente dalla tua pagina web allegando la funzione FB.logout()
dell'SDK JavaScript a un pulsante o a un link.
FB.logout(function(response) { // Person is now logged out });
Nota: la chiamata della funzione potrebbe disconnettere l'utente anche da Facebook.
La disconnessione dalla tua pagina web non revoca, inoltre, le autorizzazioni che l'utente ha concesso alla tua pagina web durante l'accesso. Devi effettuare la revoca delle autorizzazioni separatamente. Crea la tua pagina web in modo che un utente che effettua nuovamente l'accesso dopo essersi disconnesso non visualizzi la finestra di dialogo Accedi.
Questo codice carica e inizializza l'SDK JavaScript nella tua pagina HTML. Sostituisci {app-id}
con il tuo ID app e {api-version}
con la versione di API Graph da usare. A meno che tu non abbia un motivo specifico per utilizzare una versione precedente, specifica la versione più 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>