L'SDK di Facebook per Android consente alle persone di effettuare l'accesso alla tua app con Facebook Login. In questo modo, le persone concedono all'app le autorizzazioni che ti consentono di recuperare informazioni o di eseguire azioni per conto loro su Facebook.
Per un progetto di esempio 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.
buildscript { repositories {}}
: dependencies{}
per impostare la dipendenza sulla versione più recente dell'SDK di Facebook Login: 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.
Dopo aver integrato Facebook Login, alcuni eventi nell'app vengono registrati e raccolti automaticamente per Gestione eventi, a meno che tu non disabiliti la registrazione automatica degli eventi nell'app. Per maggiori dettagli sul tipo di informazioni raccolte e su come disabilitare la registrazione automatica degli eventi nell'app, consulta Registrazione automatica degli eventi nell'app.
FacebookActivity
al tuo file manifest di Android. /app/res/values/strings.xml
.string
con i nomi facebook_app_id
, fb_login_protocol_scheme
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: /app/manifest/AndroidManifest.xml
. meta-data
all'elemento application
per il tuo ID app e token client: application
: <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>
uses-permission
al file manifest dopo l'elemento application
: uses-permission
al file manifest dopo l'elemento application
: Puoi impostare direttamente la registrazione automatica degli eventi nell'app su "true" o "false" impostando il flag AutoLogAppEventsEnabled
nel file AndroidManifest.xml
.
LoginButton
dall'SDK. LoginButton
è un elemento dell'interfaccia utente che racchiude le funzionalità disponibili in LoginManager
. Quando qualcuno clicca sul pulsante, viene avviata la procedura di accesso con le autorizzazioni impostate in LoginManager
. Facebook Login richiede l'autorizzazione advanced public_profile, che deve essere utilizzata da utenti esterni. Il pulsante segue lo stato di accesso e mostra il testo corretto in base allo stato di autenticazione dell'utente. CallbackManager.Factory.create
. 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: private static final String EMAIL = "email"; loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setReadPermissions(Arrays.asList(EMAIL)); // If you are using in a fragment, call 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 } });
LoginManager
o LoginButton
. Se registri la callback con LoginButton
, non sarà necessario registrarla anche su LoginManager. 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 } });
LoginResult
otterrà il nuovo AccessToken
e le autorizzazioni concesse o negate di recente. registerCallback
, puoi seguire le modifiche del token d'accesso attuale usando la classe AccessTokenTracker
, come descritto sotto. onActivityResult
, chiama callbackManager.onActivityResult
per passare i risultati di accesso a LoginManager
tramite callbackManager
. Se usi attività o frammenti AndroidX, non devi eseguire l'override di "onActivityResult".
onActivityResult
a callbackManager
. 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()
. 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
:queries
nel tuo file /app/manifest/AndroidManifest.xml
. 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 } });