In questo tutorial di programmazione android, iniziamo a discutere la possibilità di far lavorare insieme il Social Network più famoso del mondo ed il sistema operativo mobile più diffuso: rispettivamente, Facebook e Android.
Il colosso dei Social mette a disposizione un vero e proprio SDK per il Robottino Verde che renderà molto veloce l’integrazione delle sue funzionalità all’interno delle nostre app. I primi scopi che ci poniamo in quest’ottica sono la predisposizione di un progetto e le modalità che permettono di effettuare il login dall’interno di un’app.
Preparazione del progetto
Per prima cosa si deve avere a disposizione un account presso la piattaforma on line “Facebook for developers”: è possibile registrarvisi possedendo semplicemente credenziali di accesso valide a Facebook.
Una volta entrati si dovrà creare una nuova applicazione: con essa ci verrà consegnato un APP Id che la identificherà e potremo procedere ad una serie di configurazioni. Ci verrà chiesto se vogliamo creare un’app iOS, Android o di altro genere.
Per l’ID si dovrà fornire alcuni dati: nome visualizzato dell’app, email di contatto, un identificativo che tipicamente coinciderà con il namespace Java ed una categoria tra quelle elencate.
Fatto ciò passeremo alla configurazione del nostro progetto in Android Studio aggiungendo tra le dipendenze di Gradle il Facebook SDK:
dependencies { ... ... compile 'com.facebook.android:facebook-android-sdk:4.+' }
Nel file AndroidManifest.xml dovremo invece aggiungere tre elementi:
- l’app ID ottenuta nella piattaforma online (salvandolo ad esempio tra le risorse stringa);
- la dichiarazione della FacebookActivity tra le componenti dell’app tramite la quale eseguiremo il login verso il Social Network;
- la permission INTERNET che permetterà di accedere alla Rete.
La struttura che il file manifest assumerà sarà, di massima, la seguente:
<manifest ...> <uses-permission android:name="android.permission.INTERNET"/> <application ... > ... ... <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:label="@string/app_name" /> <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> </application> </manifest>
Il Facebook Button
Per integrare nella nostra applicazione le funzionalità di Facebook avremo bisogno, per prima cosa, di permettere all’utente di autenticarsi con le proprie credenziali. Quello che faremo sarà attivare la FacebookActivity tramite la quale verranno chieste le credenziali o, se già loggato, ci verrà notificato che l’utente ha già superato la fase di identificazione. Alla chiusura dell’Activity fornita da Facebook, il codice riceverà in un apposito listener la comunicazione relativa e ci sarà possibile conoscere il profilo dell’utente che sta usando la nostra app.
Il modo più familiare all’utente per attivare il meccanismo di accesso alla piattaforma è il Facebook Button, widget che ci viene già fornito dal SDK. Proviamo ad utilizzarlo.
Lo inseriamo nel layout:
<com.facebook.login.widget.LoginButton android:id="@+id/fb_login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" />
Quello che segue è il codice di una normale Activity che, oltre ai consueti elementi, riesce a gestire un login tramite Facebook Button:
public class MainActivity extends AppCompatActivity { private LoginButton fb_Button; private CallbackManager callbackManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getApplicationContext()); setContentView(R.layout.activity_main); callbackManager = CallbackManager.Factory.create(); fb_Button = (LoginButton)findViewById(R.id.fb_login); fb_Button.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Toast.makeText(MainActivity.this, "Login effettuato con successo!", Toast.LENGTH_SHORT).show(); } @Override public void onCancel() { } @Override public void onError(FacebookException e) { Toast.makeText(MainActivity.this, "Errore di accesso!", Toast.LENGTH_SHORT).show(); } }); } @Override protected void onActivityResult(int requestCode, int responseCode, Intent data) { super.onActivityResult(requestCode, responseCode, data); callbackManager.onActivityResult(requestCode, responseCode, data); } }
Notiamo gli elementi principali:
- all’inizio del metodo onCreate viene inizializzato il nostro SDK con l’invocazione a FacebookSdk.sdkInitialize(Context);
- gestiamo il click sul Facebook Button come su un normale pulsante anche se il listener ad esso collegato è più complesso del normale. In caso di login effettuato con successo, verrà invocato il metodo onSuccess;
- per le attività di login vere e proprie come l’inserimento delle credenziali Facebook o la notifica che l’utente risulta già loggato verrà invocata la FacebookActivity alla cui uscita il controllo passerà per il metodo onActivityResult.
Chi ha fatto login?
Se con il Facebook Button gestiamo in maniera comoda il login di un utente, la priorità nell’immediato proseguimento del lavoro consiste nel conoscere i dati di colui che ha effettuato l’accesso. Allo scopo esiste la classe Profile, finalizzata a gestire i dati di accesso degli utenti. Mette a disposizione una serie di metodi come getFirstName(), getLastName() e getLinkUri() che permettono di accedere a nome, cognome o link della pagina Facebook dell’utente.
Si può ottenere un riferimento al profilo attuale mediante l’invocazione:
Profile profile=Profile.getCurrentProfile();
Per seguire gli accessi alla nostra app tramite Facebook si può fare uso della classe ProfileTracker che ci avviserà di ogni login/logout che si verifica:
ProfileTracker profileTracker=new ProfileTracker() { @Override protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) { Toast.makeText(MainActivity.this, "Errore di accesso!", Toast.LENGTH_SHORT).show(); } }; profileTracker.startTracking();
Il frammento di codice qui mostrato può essere collocato nell’onCreate dell’Activity ed il metodo onCurrentProfileChanged() verrà invocato ad ogni cambio di accesso: il parametro oldProfile sarà non nullo in caso di logout mentre il currentProfile sarà non nullo in caso di avvenuto login.
Conclusioni
Quanto abbiamo visto in questa lezione mostra i due passi fondamentali per l’utilizzo della piattaforma Facebook in un’app Android: predisposizione del progetto e accesso alla piattaforma Social mediante le credenziali in possesso dell’utente. Da qui, nei prossimi tutorial di questo sito, muoveremo verso nuove attività che permetteranno di interagire in maniera attiva con la piattaforma.
No Responses to “Come fare il login su facebook dalle applicazioni Android”