Autore Topic: Autenticazione per utilizzo applicazione  (Letto 1094 volte)

Offline grausof

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
Autenticazione per utilizzo applicazione
« il: 13 Gennaio 2011, 17:19:20 CET »
0
Salve a tutti, ho creato una piccola applicazione per Android, ma siccome vorrei ben testarla, ho deciso di distribuire una beta. Ora non vorrei che questa venga distribuita anche ad altri utenti, quindi ho pensato di inserire un'autenticazione per utilizzarla. O meglio, vorrei creare un layout, che all'apertura dell'applicazione, consenta all'utente di inserire il proprio nome utente ed una password, se questo è abilitato, può continuare ad utilizzare l'applicazione e quindi visualizzare il nuovo layout, altrimenti mostrare un  messaggio d'errore dicendo che l'utente non è autorizzato. Il login vorrei gestirlo tramite una pagina php (sul mio server) che controllo se l'utente è autorizzato o meno e poi restituisce il risultato per consentire all'applicazione di proseguire, oppure controlla in un files xml se il nome utente corrisponde con la rispettiva password. Avete qualche idea da dove iniziare, o meglio per il layout principale e per la pagina php non ci sono problemi, ma non saprei come gestire l'autenticazione lato java.   o_O

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Autenticazione per utilizzo applicazione
« Risposta #1 il: 13 Gennaio 2011, 17:30:15 CET »
0
Non capisco in cosa ti blocchi... hai già detto tutto!  o_O

Da android chiami la pagina php passando in post/get user e password
Lo script restituisce un bel response code 200 OK in caso in cui l'autenticazione va a buon fine o un 403 Forbidden in caso di errore (maggiori info sui codici qui HTTP/1.1: Status Code Definitions )
Da android leggi il response, se è 200 va avanti, altrimenti una popup con non autorizzato ed un bel finish!

Se non sai come comunicare con il php guarda questa classe HttpClient | Android Developers

Offline grausof

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
Re:Autenticazione per utilizzo applicazione
« Risposta #2 il: 13 Gennaio 2011, 17:38:00 CET »
0
Marco, grazie per aver risposto. Comunque mi blocco proprio quando devo modificare il file java. Mi spiego meglio, ora ho il java funzionante che all'apertura chiama l'activity dell'applicazione. Ora non saprei come fare per mostrare una nuova activity per il login, e poi come effettuare il controllo su cosa ha restituito php. Forse è meglio se inizio a creare il php..

 

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Autenticazione per utilizzo applicazione
« Risposta #3 il: 13 Gennaio 2011, 18:14:33 CET »
0
Io cambierei semplicemente l'activity iniziale. Invece di essere quella attuale ne metti un'altra che gestisce la login... se va a buon fine fa partire l'activity iniziale della tua applicazione altrimenti picche!

Per il controllo, guarda la classe che ti ho postato prima e se ti servono esempi ne trovi 1000 googlando.

Offline grausof

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
Re:Autenticazione per utilizzo applicazione
« Risposta #4 il: 13 Gennaio 2011, 21:12:04 CET »
0
Ok, ci sono quasi riuscito. Ma ora ho un problema. Quando vado a verificare se l'utente può proseguire o meno, succede che nonostante String risp mi restituisce il valore HTTP/1.1 200 OK, quando vado ad effettuare il controllo con if, mi risulta sempre Errore autenticazione, o meglio che risp non è uguale a HTTP/1.1 200 OK. Dove è che sbaglio?
Codice (Java): [Seleziona]
   
HttpResponse response = httpclient.execute(httppost);
              String risp = response.getStatusLine().toString();
              String risp200 = "HTTP/1.1 200 OK";
                                if (risp == risp200){
                                         Toast.makeText(this, "OK" , Toast.LENGTH_LONG).show();
                                }
                                else {
                                        Toast.makeText(this, "Errore autenticazione" , Toast.LENGTH_LONG).show();}
                               

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Autenticazione per utilizzo applicazione
« Risposta #5 il: 13 Gennaio 2011, 22:51:51 CET »
0
L'uguaglianza tra stringhe non si fa con l'operatore == ma con il metodo equals.

In ogni caso non fare il toString ma fai un confronto tra codici:
Codice (Java): [Seleziona]
response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK
Ciao!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Autenticazione per utilizzo applicazione
« Risposta #6 il: 14 Gennaio 2011, 08:46:16 CET »
0
Tramite il meccanismo di licenze è possibile assegnare e revocare l'accesso ai tester, io se fossi in te valuterei di utilizzarlo ;)
Licensing Your Applications | Android Developers

Offline grausof

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
Re:Autenticazione per utilizzo applicazione
« Risposta #7 il: 14 Gennaio 2011, 17:30:46 CET »
0
Ok, grazie mille a tutti. Ma ora sorge un problema, l'autenticazione viene effettuata regolarmente con la connessione ad internet attivata. Ora vorrei fare in modo che una volta che l'utente viene autenticato, venga creato un files all'interno della applicazione, magari un semplice xml che permette all'utente di utilizzare l'applicazione successivamente anche senza essere connesso ad internet e senza effettuare l'autenticazione. Ho pensato di creare un file xml con all'interno una stringa tipo <auth>OK</auth>, e poi far effettuare un controllo all'activity, se questo files è presente o meno. Il problema:
Prima cosa è possibile far creare un files all'interno all'applicazione, o è possibile solo modificarlo. Se si, in che modo posso creare questo files (xml) ovviamente tramite java?
Altrimenti sarei costretto a farlo creare all'interno della sdcard, ma non sarebbe molto sicuro come metodo.

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Autenticazione per utilizzo applicazione
« Risposta #8 il: 14 Gennaio 2011, 17:44:20 CET »
0
Usa le SharedPreference no?

Offline grausof

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
Re:Autenticazione per utilizzo applicazione
« Risposta #9 il: 14 Gennaio 2011, 22:21:46 CET »
0
Wow, grandissima soluzione. Grazie mille, ho risolto tutti i miei problemi. Un ultima cosa, siccome non vorrei che una volta effettuato l'accesso premendo il tasto indietro venga mostrata di nuovo l'activity poter il login ho bloccato il tasto back, ora come potrei fare che l'activity precedente venga cosa e quindi premendo su back l' applicazione viene chiusa direttamente? Avevo pensato a FLAG_ACTIVITY_CLEAR_TOP, ma non so come utilizzatela.

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Autenticazione per utilizzo applicazione
« Risposta #10 il: 14 Gennaio 2011, 23:09:58 CET »
0
io fossi in te farei semplicemente che quando passi all'activity dopo il login (quindi quando chiami startActivity() ) ci metti un this.finish()!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Autenticazione per utilizzo applicazione
« Risposta #11 il: 14 Gennaio 2011, 23:58:43 CET »
0
Altrimenti nelle apidemo c'è proprio un esempio che fa questo! ;-)

Offline grausof

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
Re:Autenticazione per utilizzo applicazione
« Risposta #12 il: 15 Gennaio 2011, 18:14:51 CET »
0
Ho utilizzato this.finish. Ho risolto tutti i miei problemi. Siete stati grandi.