Tra i grandi misteri che l'intelletto propone io pongo anche la configurazione degli Android API Level nei progetti Xamarin.Android, nonchè i molti messaggi di errore che NUGet propone quando si modificano in modo improvvido detti valori, o comunque si traffica con le versioni dei pacchetti.

Io con franchezza ho grosse difficoltà a comprendere l'argomento, e tutte le volte che devo toccare qualcosa in questo ambito mi rifaccio ai miei "sacri" appunti e.... incrocio le dita......

Per questo motivo ho deciso di scriverne qualcosa con la speranza che possa aiutare anche altri.

Iniziamo con specificare i termini del problema.

Per ogni progetto Xamarin.Android è necessario impostare nelle proprietà del progetto i tre seguenti valori.

Minimum Android Version (minSdkVersion)
Questo valore permette di specificare la minima versione di Android dove la app è in grado di funzionare.

Target Framework
Indica quale versione di Android viene utilizzata per compilare la app.

Target Android Version (targetSdkVersion)
E' la versione di Android dove si immagina che la nostra app sarà in esecuzione. In altri termini possiamo dire che la app sarà ottimizzata per la versione di Android qui specificata.

Il commento che ho specificato sotto ogni voce scommetto che più che chiarire Vi ha fatto confusione: concordo appieno ma abbiate la pazienza di leggere il seguito e tutto (forse) diventerà chiaro.

Dopo aver seguito tutte le osservazioni che Vi segnalo sono certo che comprenderete qualcosa in più di questi "mistemagici" valori.

La domanda può sembrare banale, ma come si fanno ad ottenere delle informazioni sull’utente (ad esempio lo userid) che si è appena autenticato usando l’IdP ?

La procedura è completamente eseguita per mezzo di chiamate all’SDK del client Azure o anche dell’SDK dell’IdP, e in nessun punto vi è la possibilità di accedere allo userid inserito dall’utente.

Solo usando la client-flow si ha in mano il token rilasciato dall'IdP, che eventualmente può essere utilizzato, sempre con l’ausilio dell’SDK fornito, per prelevare ulteriori informazioni sull’utente.

Questa operazione implica sempre chiamate a servizi esterni, nonchè conoscere molto bene l'SDK dell'IdP utilizzato.

Se invece si usa l'autenticazione server-flow è impossibile accedere al token originario e/o alle informazioni che l’IdP ha sul nostro utente (esempio: la mail).

Per ovviare a questo i servizi Azure Mobile mettono a disposizione un endpoint apposta che restituisce proprio questa informazione.
<URL backend>/.auth/me.

Più in dettaglio interrogando questo endpoint, aggiungendo alla richiesta il token rilasciato dai servizi Azure, verranno restituite le informazioni principali che l’IdP ha sul nostro utente, insieme anche al token originario rilasciato dell’IdP.

Nota molto importante.

Siccome in casi particolari un utente può essersi autenticato ai servizi Azure con l'ausilio di più Idp contemporanemante, usando questo endpoint si hanno indietro tutte le informazioni di tutti gli IdP associato all’utente. Per questo motivo la risposta è una List e non un oggetto singolo.

In questa parte della serie dirò qualcosa sul codice utilizzato per eseguire l'autenticazione client-flow (vedere linkografia): ovviamente affinchè tutto funzioni occorre aver seguito con religiosa cura i passi di configurazione esposti nelle puntate precedenti.

Il codice esposto permette l'autenticazione presso l'IdP Facebook usando il relativo SDK nativo: Xamarin.Facebook.Android.

Prosegue la serie dedicata allo sviluppo di una app che permette di segnalare i migliori posti dove si gusta la vera focaccia genovese.

Oramai la app ha delle caratteristiche di tutto rispetto: offline-sync e gestione autenticazione in modalità server-flow.

Siccome siamo programmatori 8o almeno io tento di esserlo) e per questo non siamo mai contenti, e se non abbiamo rogne ce le andiamo a cercare, ecco che voglio presentarVi le modalità per dotare la app in sviluppo con autenticazione client-flow.

Come detto in precedenza questo tipo di autenticazione si basa sull'SDK nativo messo a disposizione dall'IdP: nel nostro caso Facebook.

Anche in questo caso prima di buttarci nel codice occorre configurare il portale developer di Facebook, in modo da permetterci di usare il relativo SDK.