Primi passi con l'SDK di Facebook per Android

Questa documentazione illustra come iniziare l'integrazione della tua app Android con Facebook utilizzando l'SDK di Facebook per Android. La versione attuale dell'SDK di Facebook per Android è la 12.0.0 e richiede l'API Android 15. Per maggiori informazioni su versioni e funzioni, consulta SDK di Facebook per Android.

Quando usi l'SDK di Facebook, alcuni eventi nella tua app vengono registrati e raccolti automaticamente per Facebook Analytics a meno che non disabiliti la registrazione automatica degli eventi. Per maggiori dettagli sul tipo di informazioni raccolte e su come disabilitare la registrazione automatica degli eventi, consulta Registrazione automatica degli eventi nelle app.

Puoi configurare la tua app per utilizzare l'SDK di Facebook per Android nei modi seguenti:

  • utilizzando l'avvio rapido;
  • configurando il progetto con l'SDK di Facebook per Android.

Avvio rapido

Per ottenere un ID app Facebook, configurare le impostazioni della tua app e importare l'SDK di Facebook per Android, clicca sul pulsante qui sotto e segui le istruzioni.

Avvio rapido per Android

Prima di iniziare

Ecco cosa ti servirà:

Comprensione dell'autorizzazione ID pubblicitario

A partire dalla versione 13.0.0, ogni app creata utilizzando l'SDK di Facebook per Android aggiunge automaticamente l'autorizzazione ID pubblicitario all'app. Per maggiori informazioni, consulta ID pubblicitario - Guida di Play Console.

In alcuni casi, potresti voler disattivare l'inclusione dell'autorizzazione ID pubblicitario nell'app. Ad esempio, se i clienti per l'app sono bambini e famiglie, l'autorizzazione ID pubblicitario potrebbe non essere pertinente. Per escludere l'autorizzazione ID pubblicitario dall'app, segui le istruzioni riportate di seguito in questa documentazione.

Configurazione di Android Studio

Creazione del progetto

Per utilizzare l'SDK di Facebook in un progetto di Android Studio, aggiungi l'SDK come dipendenza build e importa l'SDK.

  1. Accedi ad Android Studio | New Project (Nuovo progetto) | Minimum SDK (SDK minimo).

  2. Seleziona API 15: Android 4.0.3 (IceCreamSandwich) o versioni successive e crea il nuovo progetto.

  3. Apri il file Gradle Scripts | build.gradle (Project: <your_project>) e aggiungi il seguente elemento:

    mavenCentral()
    
  4. Salva e chiudi il file build.gradle (Project: <your_project>).

  5. Apri il file Gradle Scripts | build.gradle (Module: app) e aggiungi il seguente elemento alla sezione dependencies:

    implementation 'com.facebook.android:facebook-android-sdk:latest.release'
    

  6. Salva e chiudi il file build.gradle (Module: app).

  7. Crea il progetto. Ora puoi importare com.facebook.FacebookSdk nell'app.

Aggiornamento del manifest

Aggiungi l'ID app e il token client nel file stringa del progetto e aggiorna il file manifest. Esegui le seguenti azioni:

  1. Apri il file /app/res/values/strings.xml nel progetto dell'app.

  2. Aggiungi elementi string con i nomi facebook_app_id e facebook_client_token e imposta i valori su ID app e token client. Ad esempio, se l'ID app è 1234 e il token client è 56789, il codice sarà il seguente:

    <string name="facebook_app_id">1234</string><string name="facebook_client_token">56789</string>
  3. Apri il file /app/manifests/AndroidManifest.xml nel progetto dell'app.

  4. Aggiungi elementi meta-data all'elemento application per l'ID app e il token client:

    <application android:label="&#064;string/app_name" ...>
        ...
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/><meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
        ...
    </application>
  5. Aggiungi un elemento uses-permission al file manifest dopo l'elemento application:

    <uses-permission android:name="android.permission.INTERNET"/>
  6. (Facoltativo) Per disattivare l'autorizzazione ID pubblicitario, aggiungi un elemento uses-permission al file manifest dopo l'elemento application:

    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
  7. Crea il progetto.

Abilitazione della condivisione

Se condividi link, immagini o video dall'app, dichiara l'autorità FacebookContentProvider nel manifest. Esegui le seguenti azioni:

  1. Apri il file /app/manifests/AndroidManifest.xml nel progetto dell'app.

  2. Aggiungi un elemento provider al manifest per l'autorità FacebookContentProvider. Aggiungi l'ID app alla fine del valore authorities. Ad esempio, se l'ID app è 1234, la dichiarazione sarà la seguente:

    <provider android:authorities="com.facebook.app.FacebookContentProvider1234"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true" />
    
  3. Crea il progetto.

Esecuzione delle app di esempio

I seguenti esempi vengono forniti con l'SDK di Facebook per Android:

  • HelloFacebookSample: dimostra l'accesso al profilo, gli aggiornamenti di stato e il caricamento di foto.

Puoi sperimentare con gli esempi importando l'SDK di Facebook in un progetto di Android Studio. Gli esempi dispongono di una dipendenza dal progetto piuttosto che una dipendenza dal repository centrale tramite maven central o jcenter. In tal modo, quando una copia locale dell'SDK riceve aggiornamenti, gli esempi riflettono le modifiche.

Per eseguire rapidamente le app di esempio, puoi generare gli hash chiave per gli ambienti di sviluppo. Aggiungili al profilo sviluppatore di Facebook per le app di esempio. Keytool, per la generazione degli hash chiave, è incluso con il Java SE Development Kit (JDK) installato durante la configurazione dell'ambiente di sviluppo. È possibile scaricare OpenSSL da OpenSSL.

Su OS X, esegui:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Su Windows, hai bisogno dei seguenti elementi:

Esegui il seguente comando in un prompt dei comandi nella cartella dell'SDK Java, che genera una stringa di 28 caratteri.

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64

Accedi al sito per gli sviluppatori di Facebook. Accedi a Facebook e, utilizzando il menu a discesa in alto a destra, accedi a Impostazioni per gli sviluppatori:

Nelle impostazioni per gli sviluppatori, seleziona App di esempio dal menu e aggiungi e salva l'hash chiave nel profilo:

Puoi aggiungere più hash chiave se sviluppi con più macchine.

Ora puoi compilare ed eseguire tutti gli esempi, compresi quelli che utilizzano Facebook Login.

Creazione di un hash chiave di sviluppo

Facebook utilizza l'hash chiave per autenticare le interazioni tra la tua app e l'app Facebook. Se esegui app che utilizzano Facebook Login, devi aggiungere l'hash chiave di sviluppo Android al profilo sviluppatore di Facebook.

Anche per la versione della tua app che rilasci devi generare e impostare un hash chiave di release.

Su OS X o Windows puoi ottenere un hash chiave generandolo o utilizzando il valore restituito da Settings.getApplicationSignature(Context). Per le istruzioni, consulta Esecuzione delle app di esempio .

Creazione di un hash chiave di release

Per autenticare lo scambio di informazioni tra la tua app e Facebook, devi generare un hash chiave di release e aggiungerlo alle impostazioni di Android all'interno dell'ID app Facebook. Senza tale passaggio, l'integrazione con Facebook potrebbe non funzionare correttamente quando rilasci l'app nell'app store.

In un passaggio precedente, dovresti aver aggiornato le impostazioni per gli sviluppatori di Facebook con gli hash chiave per gli ambienti di sviluppo.

Durante la pubblicazione dell'app, quest'ultima viene di solito firmata con una firma diversa per l'ambiente di sviluppo. Pertanto, assicurati di creare un hash chiave di release e di aggiungerlo alle impostazioni Android per l'ID app Facebook.

Per generare un hash chiave di release, esegui il comando seguente su Mac o Windows sostituendo l'alias della chiave di release e il percorso dell'archivio chiavi.

Su Mac OS, esegui:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

Su Windows, hai bisogno dei seguenti elementi:

Esegui il seguente comando in un prompt dei comandi nella cartella dell'SDK Java:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | PATH_TO_OPENSSL_LIBRARY\bin\openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64

Assicurati di utilizzare la password impostata durante la creazione della chiave di release.

Tale comando dovrebbe generare una stringa di 28 caratteri. Copia e incolla questo hash chiave di release nelle tue impostazioni Android dell'ID app Facebook.

Dovresti controllare che l'impostazione Android dell'ID app Facebook contenga anche il nome del pacchetto corretto e la classe di attività principale per il tuo pacchetto Android.

Utilizzo dell'SDK di Facebook per Android con Maven

Puoi dichiarare la dipendenza di Maven con l'ultima versione disponibile dell'SDK di Facebook per Android.

<dependency>
  <groupId>com.facebook.android</groupId>
  <artifactId>facebook-android-sdk</artifactId>
  <version>PUT_LATEST_VERSION_HERE</version>
</dependency> 

Risoluzione dei problemi delle app di esempio

Se riscontri un problema con l'esecuzione di un'app di esempio, potrebbe essere correlato all'hash chiave. Potresti visualizzare uno dei seguenti scenari:

  • Viene visualizzata una finestra di dialogo di accesso nativa, ma dopo aver accettato le autorizzazioni ti trovi ancora in uno stato di disconnessione. Anche il logcat contiene un'eccezione:
12-20 10:23:24.507: W/fb4a:fb:OrcaServiceQueue(504):
com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id
  • Viene visualizzata una finestra di dialogo di accesso non nativa con un messaggio di errore: ''..L'app è configurata in modo errato per Facebook Login...''.

Controlla l'hash chiave e assicurati di utilizzare l'hash chiave corretto. I

Puoi anche modificare manualmente il codice di esempio per utilizzare l'hash chiave corretto. Ad esempio, nella classe HelloFacebookSampleActivity apporta una modifica temporanea a onCreate():

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {
        
    } catch (NoSuchAlgorithmException e) {
        
    }
    
    ...

Salva le modifiche ed esegui nuovamente l'esempio. Controlla l'output di logcat per un messaggio simile a questo:

12-20 10:47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=

Salva l'hash chiave nel profilo sviluppatore. Esegui nuovamente gli esempi e verifica di poter accedere correttamente.

Altri contenuti da consultare