|
|
|
|
Strumenti |
07-12-2014, 16:30 | #1 |
Senior Member
Iscritto dal: Jan 2010
Messaggi: 1084
|
[JAVA-ANDROID] Login Pagina WEB
Ciao a tutti!
Vorrei sapere se è possibile effettuare il login ad una pagina tramite applicazione android che va a "completare i campi". Dovrebbe: *se il login va a buon passare ad un'activity fine che visualizza la pagina a cui ci si è loggati *fare un toast se non sono corretti i dati di login Non posso lavorare sul server del sito in quanto è un servizio, né conosco che tipo di autenticazione usa. So solo che mi interfaccio su una pagina [.php]. Grazie per l'aiuto!
__________________
Ho concluso positivamente con: Nicole Ridgway, Alphacyngni, ICER, gtv3000, holydio,MaxN, albert78, GTO286, subrahmanyam, Commanders, MarcoTechnofolle, master3000, nuvolona,xqtm,bruciato e altri |
09-12-2014, 16:09 | #2 |
Member
Iscritto dal: Oct 2013
Messaggi: 158
|
Si può fare, ma dovresti conoscere a priori la struttura della pagina che contiene la form di login.
Se così fosse basta prendere i parametri da passare ad un ipotetico endpoint php. Ad esempio http://www.hwupgrade.it/login.php?user=tuouser&pass=tuapassword , e funziona. Se invece non conosci la struttura della pagina a priori, devi fare il parse di tutta la pagina, trovare la form,...ma a questo punto mi sorgono delle domande: - se la form è in javascript per esempio? - se ci sono più form all'interno della pagina come distingui la form giusta? |
09-12-2014, 17:45 | #3 | |
Senior Member
Iscritto dal: Jan 2010
Messaggi: 1084
|
Quote:
Ispezionando la pagina ho visto che questo è il form: <form id="formlogin" method="post" action="login.php"> Poi ci sono 3 campi da compilare: <input type="hidden" name="custcode" value="asd" size="15"> <input type="hidden" name="login" value="yourUsername" size="15"> <input class="input_account idesk-force-focus" type="password" autocomplete="off" placeholder=" Password" name="password" value="" tabindex="3" style="width:95%;border-radius: 5px; border: 1px solid #aaaaaa; color: #ff0000; height: 30px; font-size: 16px; padding-left: 4px;"> E poi il bottone per inviare la richiesta: <input type="submit" value="Conferma" class="btn_confirm"> Conoscendo in questo modo la struttura della pagina, si riesce a fare qualcosa? Grazie ancora per l'aiuto! EDIT: Ho provato a compilare l'URL come hai detto te con i "name" dei campi e i valori del mio account e funziona... Come sarebbe il codice per inoltrare la richiesta alla pagina quindi? E per ricevere la risposta nel caso non andasse il login (user/pssw sbagliati...)? Grazie!!!
__________________
Ho concluso positivamente con: Nicole Ridgway, Alphacyngni, ICER, gtv3000, holydio,MaxN, albert78, GTO286, subrahmanyam, Commanders, MarcoTechnofolle, master3000, nuvolona,xqtm,bruciato e altri Ultima modifica di I-Gamer : 09-12-2014 alle 17:51. |
|
09-12-2014, 21:37 | #4 |
Member
Iscritto dal: Oct 2013
Messaggi: 158
|
certo che puoi, attraverso il DOM.
Il problema qual'e? che sviluppare un automatismo che fa il parse di una pagina (non conosciuta a priori) per trovare la form di login è un'incognita. Cioè il tuo obbiettivo è quello di trovare la form di login, quindi i tag <form..> ... </form>, ma se il sito è fatto in flash quei tag non li vedrai mai, stessa cosa se la form è fatta in javascript. Ora se il tuo obbiettivo è fare una cosa statica, dove tu hai una lista di siti prestabiliti su cui vuoi fare questa cosa, si può fare, ma non c'e da scrivere tanto codice, perche puoi fare uno switch, dove a seconda del servizio scelto, tu costruisci la stringa es. http://www.hwupgrade.it/login.php?us...ss=tuapassword e lo ridirezioni li (visto che conoscendo il sito a priori puoi costruire tu la stringa ad occhio, leggendo tu il codice html). Se il tuo obbiettivo è una cosa dinamica, e quindi vuoi gestire tutti i possibili siti, allora c'e da scrivere un po di codice javascript e scorrendo il DOM capire dove si trova la form, trovare quella giusta, estrapolare i dati giusti. Per gestire un login errato non saprei, è una bella domanda, avrei delle idee ma non so quanto "belle" sarebbero. Dipende comunque dall'implementazione, lato server, del caso di login fallito. C'e chi ti ridireziona in un'altra pagina, c'e chi ti da la notifica sulla pagina stessa (AJAX), ecc.. Ma la tua applicazione vuole essere una cosa che funziona universalmente o per un range di siti predefiniti? |
09-12-2014, 22:22 | #5 | |
Senior Member
Iscritto dal: Jan 2010
Messaggi: 1084
|
Quote:
Quello che mi piacerebbe fare è salvare i dati di login in un account che crei sul dispositivo. Esempio: ACCOUNT 1 Username = user Password = pssw Ed associare un metodo di sblocco di android (pin, scorrimento, riconoscimento facciale) in modo che per accedere all'account non bisgona scrivere nè user nè password ma utilizzare questi metodi che sono più intuitivi. Grazie ancora Buona serata!
__________________
Ho concluso positivamente con: Nicole Ridgway, Alphacyngni, ICER, gtv3000, holydio,MaxN, albert78, GTO286, subrahmanyam, Commanders, MarcoTechnofolle, master3000, nuvolona,xqtm,bruciato e altri Ultima modifica di I-Gamer : 09-12-2014 alle 23:04. |
|
10-12-2014, 09:39 | #6 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Il form che hai individuato esegue una post, ciò significa che non puoi passare i parametri tramite l'url. Per fare una post ci sono due possibilità:
1) Utilizzare le classi dedicate al protocollo http; 2) precompilare un form html e farlo sottomettere tramite il browser integrato. Il primo metodo te lo sconsiglio perché poi sarebbe necessario iniettare i cookies di risposta all'interno del browser integrato, che è una cosa fattibile ma esageratamente complessa per il caso in questione. Il secondo metodo è abbastanza semplice, basta che inserisci i dati di autenticazione nel form e lo fai caricare al browser integrato, poi tramite javascript lo sottometti (puoi inserire il codice javascript direttamente nell'html). Quando dico "inserisci i dati di autenticazione nel form" intendo dire che nell'applicazione scrivi una cosa tipo: Codice:
String data = "<html> ... <form name='form1' method='post' action='http://.../login.php'> <input type='hidden' name='login" value='yourUsername' value='" +variabile_username + "'> <input type='password' name='password' value='" +variabile_password + "'> ... </form> <script> //sottometti form1 </script> </html>"; Ho volutamente omesso delle istruzioni per evidenziare i punti salienti. |
13-12-2014, 18:34 | #7 |
Senior Member
Iscritto dal: Jan 2010
Messaggi: 1084
|
Grazie ragazzi,
sono riuscito a fare un'applicazione che sulla prima activity prende i dati di login e quando viene premuto il bottone di login spedisce i dati nella seconda activity con i quali fa il login nel sito (tramite URL) che viene visualizzato tramite webview! @Daniels118 dato che con alcuni parametri non funziona mi potresti spiegare come funziona meglio il secondo metodo di cui parli? Grazie!
__________________
Ho concluso positivamente con: Nicole Ridgway, Alphacyngni, ICER, gtv3000, holydio,MaxN, albert78, GTO286, subrahmanyam, Commanders, MarcoTechnofolle, master3000, nuvolona,xqtm,bruciato e altri Ultima modifica di I-Gamer : 14-12-2014 alle 00:23. |
14-12-2014, 09:22 | #8 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Si tratta di caricare un form precompilato nel browser (webview) e sottometterlo, cos'è che non ti è chiaro?
|
15-12-2014, 22:45 | #9 | |
Senior Member
Iscritto dal: Jan 2010
Messaggi: 1084
|
Quote:
Grazie ancora a tutti!
__________________
Ho concluso positivamente con: Nicole Ridgway, Alphacyngni, ICER, gtv3000, holydio,MaxN, albert78, GTO286, subrahmanyam, Commanders, MarcoTechnofolle, master3000, nuvolona,xqtm,bruciato e altri |
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:08.