Autore Topic: Login Facebook  (Letto 1854 volte)

Offline Matteo87

  • Utente junior
  • **
  • Post: 52
  • Respect: 0
    • Mostra profilo
Login Facebook
« il: 24 Ottobre 2011, 18:28:15 CEST »
0
Ciao, non sono sicuro sia la sessione giusta per questa domanda, chiedo scusa lo non lo è.
Devo creare un'applicazione che ha bisogno del login di facebook per avere accesso ai dati dell'utente. Come posso fare ?

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Login Facebook
« Risposta #1 il: 24 Ottobre 2011, 18:32:30 CEST »
0
Ciao! Questo è il tutorial per Android dal sito di facebook:  Android Tutorial - Facebook Developers.   ;-)

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:Login Facebook
« Risposta #2 il: 24 Ottobre 2011, 19:53:27 CEST »
0
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 Matteo87

  • Utente junior
  • **
  • Post: 52
  • Respect: 0
    • Mostra profilo
Re:Login Facebook
« Risposta #3 il: 25 Ottobre 2011, 19:22:41 CEST »
0
Grazie. Seguendo la guida ufficiale effettivamente sono riuscito a farmi mostrare la finestra di login.
Ma ora come eseguo il logout ? Al punto della guida :  "Step 7: Enable user to Log Out of your App " c'è semplicemente questa istruzione :      mAsyncRunner.logout(getContext(), new LogoutRequestListener());
che ovviamente mi genera errore. Che faccio??

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Login Facebook
« Risposta #4 il: 25 Ottobre 2011, 19:59:41 CEST »
0
Per il logout c'è il metodo Facebook.logout(context).  ;-)

Offline Matteo87

  • Utente junior
  • **
  • Post: 52
  • Respect: 0
    • Mostra profilo
Re:Login Facebook
« Risposta #5 il: 25 Ottobre 2011, 20:06:32 CEST »
0
Il parametro context dove lo prendo ?
Scusami ma è la prima volta che programmo su android .. Grazie mille dell'aiuto cmq

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Login Facebook
« Risposta #6 il: 25 Ottobre 2011, 20:09:30 CEST »
0
Sei sei dentro ad un'activity gli passi "this", sennò dipende dal codice che hai scritto.  ;-)

Offline Matteo87

  • Utente junior
  • **
  • Post: 52
  • Respect: 0
    • Mostra profilo
Re:Login Facebook
« Risposta #7 il: 25 Ottobre 2011, 20:13:54 CEST »
0
public class TrustMobileActivity extends Activity {

   
Codice (Java): [Seleziona]
 Facebook facebook = new Facebook("111111111111");

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        facebook.authorize(this, new DialogListener() {
            @Override
            public void onComplete(Bundle values) {}

            @Override
            public void onFacebookError(FacebookError error) {}

            @Override
            public void onError(DialogError e) {}

            @Override
            public void onCancel() {}
        });
[b]
        try { facebook.logout(this); }
                catch (MalformedURLException e1) { e1.printStackTrace();}
                catch (IOException e1) { e1.printStackTrace(); }[/b]       
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        facebook.authorizeCallback(requestCode, resultCode, data);
    }

}


Questo è il mio codice, che è semplicemente l'esempio preso dalla guida. La prima volta che l'ho lanciata(senza l'istruzione di logout) mi ha fatto eseguire il login. Ora ogni volta che la lancio non mi fa eseguire il login, anche se ho inserito l'istruzione di logout
« Ultima modifica: 25 Ottobre 2011, 20:22:15 CEST da Ricky` »

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Login Facebook
« Risposta #8 il: 25 Ottobre 2011, 21:29:06 CEST »
0
Dovresti separare login e logout, nonostante sia un test, magari usando un pulsante a cui associare il metodo logout.
In più dovresti almeno farci vedere come salvi stringa ed expire della sessione.   ;-)

Offline Matteo87

  • Utente junior
  • **
  • Post: 52
  • Respect: 0
    • Mostra profilo
Re:Login Facebook
« Risposta #9 il: 25 Ottobre 2011, 22:25:43 CEST »
0
Il codice l'ho modificato così (sempre da guida), non so se ora è ok per vedere stringa ed expire della sessione.
In più ho aggiunto un pulsante in cui ho messo il metodo logout ma anche se clicco non succede nulla


Codice (Java): [Seleziona]
public class TrustMobileActivity extends Activity {

    Facebook facebook = new Facebook("1111");
    String FILENAME = "AndroidSSO_data";
    private SharedPreferences mPrefs;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        /*
         * Get existing access_token if any
         */

        mPrefs = getPreferences(MODE_PRIVATE);
        String access_token = mPrefs.getString("access_token", null);
        long expires = mPrefs.getLong("access_expires", 0);
        if(access_token != null) {
            facebook.setAccessToken(access_token);
        }
        if(expires != 0) {
            facebook.setAccessExpires(expires);
        }
       
        /*
         * Only call authorize if the access_token has expired.
         */

        if(!facebook.isSessionValid()) {

            facebook.authorize(this, new String[] {}, new DialogListener() {
                @Override
                public void onComplete(Bundle values) {
                    SharedPreferences.Editor editor = mPrefs.edit();
                    editor.putString("access_token", facebook.getAccessToken());
                    editor.putLong("access_expires", facebook.getAccessExpires());
                    editor.commit();
                }
   
                @Override
                public void onFacebookError(FacebookError error) {}
   
                @Override
                public void onError(DialogError e) {}
   
                @Override
                public void onCancel() {}
            });
        }
   
   
        final Context c = this;
       
                Button pressButton = (Button) findViewById(R.id.pressButton);
                pressButton.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {  
                        try {
                                facebook.logout(c); }
                                catch (MalformedURLException e1) { e1.printStackTrace();}
                                catch (IOException e1) { e1.printStackTrace(); }           
                                       
                               
                               
                        }       });
   

    }
   
   
   

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        facebook.authorizeCallback(requestCode, resultCode, data);
    }
}
   
« Ultima modifica: 25 Ottobre 2011, 23:00:31 CEST da Matteo87 »

Offline Matteo87

  • Utente junior
  • **
  • Post: 52
  • Respect: 0
    • Mostra profilo
Re:Login Facebook
« Risposta #10 il: 25 Novembre 2011, 00:35:00 CET »
0
Sono riuscito a eseguire il login, ora però come posso da questa app visualizzare pagine facebook come fossi loggato da browser? Ho un oggetto facebook su cui posso invocare il metodo getAccessToken, devo utilizzare questo access token in qualche modo?

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Login Facebook
« Risposta #11 il: 25 Novembre 2011, 09:02:48 CET »
0
Il metodo che hai usato è per la graph api e quindi ottenere delle stringhe che devi trasformare in oggetti json e utilizzare come vuoi (per esempio, se volessi popolare una listview con tutti gli amici dell'utente loggato: fai una richiesta utilizzando l'oggetto facebook, ottieni la stringa con l'elenco degli amici, usi un parser per trasformare la stringa in un elenco di oggetti json e popoli la listview).

Se, come scrivi, vuoi proprio visualizzare le pagine di facebook, devi utilizzare una webview e gestire tu gli indirizzi e credo anche l'autorizzazione. Non avendolo mai utilizzato in questo modo, non so come funzioni con l'autorizzazione, ma potresti dare un'occhiata qui: https://github.com/facebook/facebook-android-sdk/blob/master/facebook/src/com/facebook/android/FbDialog.java. Questo è il dialog che viene visualizzato per fare il login attraverso il sito, e viene richiamato nel caso in cui l'utente non abbia l'applicazione di facebook installata nel telefono. Utilizza anche un WebViewClient in cui fa il parsing dell'url, controllando se l'accesso è stato eseguito con successo o meno. Potrebbe essere uno spunto per quello che devi fare.




Offline Matteo87

  • Utente junior
  • **
  • Post: 52
  • Respect: 0
    • Mostra profilo
Re:Login Facebook
« Risposta #12 il: 25 Novembre 2011, 17:20:59 CET »
0
Ti spiego, devo ricreare un applicazione che è su facebook (trust&Share) su android. Se utilizzo l'url apps.facebook.com/trustandshare accedo a questa applicazione, se invece utilizzo apps.facebook.com/trustandshare/contacts?output=json ricevo la stringa json con le informazioni che mi servono da utilizzare poi in Android. E ovviamente per poter accedere a quella url devo essere loggato in facebook.

Grazie mille dell'aiuto !
« Ultima modifica: 25 Novembre 2011, 17:43:01 CET da Matteo87 »

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Login Facebook
« Risposta #13 il: 25 Novembre 2011, 17:42:28 CET »
0
Per visualizzare l'applicazione, usi una webview e, in questo caso, non saprei come fare l'accesso usando l'accessToken che possiedi.
Per la stringa json, la prassi è questa:
Codice (Java): [Seleziona]
                 // Crei un oggetto facebook
                Facebook facebook = new Facebook(Id della tua applicazione);

                // Setti l'autorizzazione (in questo caso è stata salvata nelle sharedPreferences)
                facebook.setAccessToken(preferences.getFacebookAuth());
                facebook.setAccessExpires(preferences.getFacebookExp());

               // Controlli che sia valida
               if (facebook.isSessionValid()){

               // Crei i parametri che ti serviranno per fare la richiesta
               Bundle params = new Bundle();

               // Aggiungi la stringa di autorizzazione (salvata nelle sharedPreferences)
               params.putString("access_token", preferences.getFacebookAuth());

               // Ho aggiunto quanti risultati voglio al massimo
               params.putString("limit", "60");

               // Avvio la richiesta e salvo il risultato in una stringa. Con "me/home" richiedo i post visibili nella home dell'utente loggato.
               String response = facebook.request("me/home", params);

               }
}

Per altre richieste, fai riferimento alla documentazione della graph API sul sito di facebook.   ;-)
« Ultima modifica: 25 Novembre 2011, 17:44:43 CET da Verandi »

Offline Matteo87

  • Utente junior
  • **
  • Post: 52
  • Respect: 0
    • Mostra profilo
Re:Login Facebook
« Risposta #14 il: 25 Novembre 2011, 17:55:41 CET »
0
Mi sono spiegato male io scusa, di visualizzare la pagina non mi interessa, devo solo riuscire ad ottenere le strighe json delle varie pagine dell'applicazione Trust&Share, poi queste stringhe me le lavoro in android e mi creo le varie activity che mi servono !