Avvio rapido di Facebook Login per Android

L'SDK di Facebook per Android consente agli utenti di effettuare l'accesso alla tua app con Facebook Login. In questo modo, gli utenti concedono all'app le autorizzazioni che ti consentono di recuperare informazioni o di eseguire operazioni per conto loro su Facebook.

Per un esempio di progetto che illustra come integrare Facebook Login in un'app per Android, consulta FBLoginSample su GitHub.

Segui i passaggi riportati di seguito per aggiungere Facebook Login alla tua app.

Accesso: 1.

Accedi a Facebook per creare app o iscriverti come sviluppatore.

2. Download dell'app Facebook

Scarica l'app Facebook cliccando sul pulsante sotto.

3. Integrazione dell'SDK di Facebook

L'SDK Facebook Login per Android è un componente dell'SDK di Facebook per Android. Per usare l'SDK Facebook Login nel tuo progetto, rendilo una dipendenza in Maven o scaricalo. Per supportare le modifiche in Android 11, utilizza SDK versione 8.1 o successiva.

Uso di Maven

  1. Nel tuo progetto, apri your_app > Gradle Scripts > build.gradle (Project), assicurandoti che il repository seguente sia elencato in buildscript { repositories {}}:
    jcenter() 
    
  2. Nel tuo progetto, apri your_app > Gradle Scripts > build.gradle (Module: app) e aggiungi l'istruzione di implementazione seguente alla sezione dependencies{} per impostare la dipendenza sulla versione più recente dell'SDK di Facebook Login:
     implementation 'com.facebook.android:facebook-login:[8.1)'
    
  3. Crea il progetto.

Quando usi l'SDK di Facebook Login, le azioni nella tua app vengono registrate e raccolte automaticamente per Facebook Analytics a meno che non disabiliti la registrazione automatica delle azioni. Per maggiori dettagli sul tipo di informazioni raccolte e su come disabilitare la registrazione automatica delle azioni, consulta Registrazione automatica delle azioni nelle app.

4. Modifica delle risorse e del file manifest

Se usi la versione 5.15 o successiva dell'SDK di Facebook per Android, non è necessario aggiungere un filtro di attività o intent per le tab personalizzate di Chrome. Questa funzionalità è inclusa nell'SDK.

Crea stringhe per il tuo ID app Facebook e per quelli necessari per abilitare le tab personalizzate di Chrome. Inoltre, aggiungi FacebookActivity al tuo file manifest di Android.
  1. Apri il file /app/res/values/strings.xml.
  2. Aggiungi quanto segue:
    <string name="facebook_app_id">[APP_ID]</string> <string name="fb_login_protocol_scheme">fb[APP_ID]</string>
    
  3. Apri il file /app/manifest/AndroidManifest.xml.
  4. Aggiungi l'elemento uses-permission seguente dopo l'elemento application:
      <uses-permission android:name="android.permission.INTERNET"/>
    
  5. Aggiungi l'elemento meta-data seguente, un'attività per Facebook, quindi un'attività e un filtro dell'intent per le tab personalizzate di Chrome all'interno dell'elemento application:
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity>
    

5. Associazione del nome del pacchetto e della classe predefinita all'app

Devi effettuare l'accesso per completare questo passaggio.

6. Inserimento degli hash chiave di release e di sviluppo per l'app

Devi effettuare l'accesso per completare questo passaggio.

7. Abilitazione del Single Sign On per l'app

Devi effettuare l'accesso per completare questo passaggio.

8. Aggiunta del pulsante Accedi di Facebook

Il modo più semplice per aggiungere Facebook Login alla tua app è usare LoginButton dell'SDK. LoginButton è un elemento dell'interfaccia utente che racchiude le funzionalità disponibili in LoginManager. Cliccando sul pulsante, l'utente avvia l'accesso con le autorizzazioni impostate in LoginManager. Il pulsante segue lo stato d'accesso, mostrando il testo corretto secondo lo stato di autenticazione.
Per aggiungere il pulsante Accedi di Facebook, aggiungilo innanzitutto al file XML del layout:
<com.facebook.login.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="30dp" /> 

9. Registrazione di una callback

Adesso, crea un elemento callbackManager per gestire le risposte all'accesso tramite una chiamata a CallbackManager.Factory.create.
callbackManager = CallbackManager.Factory.create();
Se aggiungi il pulsante a un frammento, devi anche aggiornare l'attività affinché il frammento stesso possa essere usato. Puoi personalizzare le proprietà di Login button e registrare una callback nel metodo onCreate() o onCreateView(). Puoi personalizzare le proprietà LoginBehavior, DefaultAudience, ToolTipPopup.Style e le autorizzazioni di LoginButton. Ad esempio:
      
    loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions("email");
    // If using in a fragment
    loginButton.setFragment(this);    

    // Callback registration
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
        }

        @Override
        public void onCancel() {
            // App code
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });
Per rispondere a un risultato di accesso, registra una callback con LoginManager o LoginButton. Se registri la callback con LoginButton, non sarà necessario registrarla anche su LoginManager.
Aggiungi la callback di LoginManager all'attività o al metodo onCreate() del frammento:
    callbackManager = CallbackManager.Factory.create();

    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    // App code
                }

                @Override
                public void onCancel() {
                     // App code
                }

                @Override
                public void onError(FacebookException exception) {
                     // App code   
                }
    });
Se l'accesso viene effettuato correttamente, il parametro LoginResult otterrà un nuovo AccessToken e le autorizzazioni concesse o negate di recente.
Per completare l'accesso non è necessario usare registerCallback, puoi seguire le modifiche del token d'accesso attuale usando la classe AccessTokenTracker, come descritto sotto.
Infine, nel tuo metodo onActivityResult, chiama callbackManager.onActivityResult per passare i risultati di accesso a LoginManager tramite callbackManager.
      @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }
Ogni attività e frammento integrati con Login o Share di FacebookSDK devono inviare onActivityResult a callbackManager.

10. Verifica dello stato d'accesso

L'accesso all'app è consentito a un solo utente alla volta, quindi LoginManager imposta gli attuali AccessToken e Profile per tale utente. FacebookSDK salva i dati nelle preferenze condivise, impostandoli all'inizio della sessione. Puoi vedere se l'utente ha già effettuato l'accesso controllando AccessToken.getCurrentAccessToken() e Profile.getCurrentProfile().
Puoi caricare AccessToken.getCurrentAccessToken con l'SDK dalla cache o dai segnalibri quando l'avvio dell'app avviene a freddo. Controllane la validità nel metodo onCreate di Activity:
AccessToken accessToken = AccessToken.getCurrentAccessToken();
boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
  
Successivamente, esegui l'accesso vero e proprio, come nell'OnClickListener di un pulsante personalizzato:
      
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));

11. Abilitazione dell'accesso veloce

L'accesso veloce consente agli utenti di accedere con il loro account Facebook su più dispositivi e piattaforme. Se una persona accede alla tua app su Android e poi cambia dispositivo, l'accesso rapido effettua l'accesso con il loro account Facebook, invece di chiedere di selezionare un metodo di accesso. Questo evita di creare account duplicati o di non riuscire ad accedere affatto. Per supportare le modifiche in Android 11, aggiungi prima il seguente codice all'elemento queries nel tuo file /app/manifest/AndroidManifest.xml.
  
<queries> <package android:name="com.facebook.katana" /> </queries>   
Il codice seguente mostra come abilitare l'accesso veloce.
LoginManager.getInstance().retrieveLoginStatus(this, new LoginStatusCallback() { @Override public void onCompleted(AccessToken accessToken) { // User was previously logged in, can log them in directly here. // If this callback is called, a popup notification appears that says // "Logged in as <User Name>" } @Override public void onFailure() { // No access token could be retrieved for the user } @Override public void onError(Exception exception) { // An error occurred } });   

Passaggi successivi

Congratulazioni, hai aggiunto Facebook Login alla tua app per Android. Consulta le altre pagine della documentazione per guide più avanzate.
Implementa una callback di eliminazione dati per rispondere alla richiesta degli utenti di eliminare i loro dati da Facebook.
Monitora il token d'accesso e il profilo dei tuoi utenti.
Gestisci i dati a cui accede la tua app attraverso Facebook Login.
Problemi nell'integrazione di Facebook Login? Consulta un elenco di problemi comuni e delle relative soluzioni.
A seconda dei dati di Facebook che richiedi alle persone tramite Facebook Login, potresti dover inviare la tua app per l'analisi prima del lancio.