Autore Topic: Facebook e Single Sign On, non vi disperate!  (Letto 10586 volte)

Offline Nicola_D

  • 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
Facebook e Single Sign On, non vi disperate!
« il: 23 Febbraio 2011, 15:23:57 CET »
+4
Allora, posto uno snippet perchè un tutorial viene troppo lungo, e lo snippet serve solo per aiutare chi sbatte la testa per giorni inutilmente come me...

intanto un po di link da leggere, che sono le fonti di informazioni:
http://developers.facebook.com/docs/guides/mobile/#android
https://github.com/facebook/facebook-android-sdk
http://stackoverflow.com/questions/4489791/facebook-android-sdk-invalid-key/4496457#4496457

Il problema è spiegato in poche parole:

Dovete fare il login con facebook nella vostra applicazione, e permettere all'utente di usare l'account che usa con l'app Facebook sul market, come fare?
Semplicissimo sembra, basta scaricare l'sdk e seguire la piccola guida che c'è allegata...
SBAGLIATO.
Il tutorial semplicemente vi mostra come fare l'applicazione e utilizzarla come esempio, come fa proprio il progetto Example allegato all'sdk.
C'è una cosa che molti di voi non sapranno, e che è spiegata velocemente nel primo link:
- Se registrate un app in facebook developers dovete anche inserire l'hash nel campo apposito per poter abilitare la procedura di login automatico.

Se non fate tutti i passaggi correttamente, ci sono due possibilità:
- L'utente non ha l'app facebook installata -> L'sdk facebook mostra un dialog per fare il login in facebook, e tutto funziona...
- L'utente ha l'app Facebook installata -> l'utente non vede niente, perchè l'errore dell'sdk è esterno alla vostra app, e voi non potete far niente.

Soluzione?
Andiamo per gradi: Avete creato un'applicazione facebook.developers che ha ID = 0123456789 (il dato qui che ho inserito è casuale)
Avete seguito l'esempio dell'example sdk, in cui la richiesta di autorizzazione è fatta così:
Codice (Java): [Seleziona]
facebook.authorize(this, new DialogListener() {
            @Override
            public void onComplete(Bundle values) {
doSomethingIsLogged();
}

            @Override
            public void onFacebookError(FacebookError error) {
manageError();
}

            @Override
            public void onError(DialogError e) {
manageError();
}

            @Override
            public void onCancel() {
manageCancel();
}
        });

Se non avete installato l'app facebook, la cosa funziona, viene mostrato un dialog con webview, fate il login e tutto funziona.
Se invece avete l'app Facebook installata, non succede niente, ecco come procedere:
Dovete creare un'hash code utilizzando la chiave utilizzata per il sign dell'applicazione, prendendo il caso semplice, la chiave di debug. (chi ha una chiave personale ovviamente deve usare quella)
La chiave di debug (che è quella utilizzata da eclipse finche voi non gli dite di usarne un'altra) si trova:
- In windows7: C:\Users\TUONOME\.android\debug.keystore
- In linux: /home/.android/debug.keystore (non sono sicuro, verificate)
- Mac: boohhh, odio il mac :D

Per poter creare questo hash code, dovete andare nella cartella dove c'è la vostra keystore (chiave di debug) ed eseguire la seguente stringa da riga di comando:
Codice: [Seleziona]
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary| openssl base64
Per gli utenti linux, dovreste essere a posto, per gli utenti windows invece vi verrà segnalato il comando openssl non riconosciuto.
La soluzione è installarlo, ma attenzione,non usate quello su googleCode, perchè crea un hash ERRATO.
Installatevi invece cygwin (quando lo installate controllate di avere installato anche openssl).
Una volta installato cygwin apritelo e digitate:
C:\
Ora andate a esplorare il c fino al vostro keystore
E quindi eseguite il comando keytool che c'è qui sopra.

ATTENZIONE: Se dopo aver inserito il comando non vi viene chiesta la password, avete sbagliato alias. Nel caso della debug.keystore, la password è: android

A questo punto prendete l'hash (TUTTO quello che è stampato, simboli o = alla fine compresi) ed andate a Connexion | Facebook scegliete la vostra app e fate Modifica impostazioni.
Quindi Cellulari e Dispositivi Mobili.
ed in basso sotto la voce Android trovate un campo Chiave Hash. Copiate li la chiave appena creata ed avete finito.

ATTENZIONE2: all'interno della vostra activity che gestisce facebook, dovete anche sovrascrivere il metodo onActivityResult per gestire la risposta al login della facebook Application. Infatti se è installata la vostra app (tramite facebook sdk) non mostrerà webview o dialog, ma inoltrerà la richiesta all'app di facebook per il login, usando un metodo startActivityForResult.
per far funzionare il tutto, è sufficiente aggiungiere queste righe di codice:
Codice (Java): [Seleziona]
  @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

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

Ora tutto deve funzionare perfettamente.
Buon divertimento!

PS: Un esempio di chiave hash (inventata al momento) è: g3sXTXaFXscgGlKiADh/7+SpJXd=
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 geg

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC TATTOO - DESIRE - WILDFIRE
  • Sistema operativo:
    WIN XP
Re:Facebook e Single Sign On, non vi disperate!
« Risposta #1 il: 28 Febbraio 2011, 16:02:31 CET »
0
Ti stimo fratello ... grazie mi hai risparmiato una settimana di lavoro  :-P

Offline Nicola_D

  • 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:Facebook e Single Sign On, non vi disperate!
« Risposta #2 il: 28 Febbraio 2011, 18:38:28 CET »
0
Ti stimo fratello ... grazie mi hai risparmiato una settimana di lavoro  :-P
è per questo che ho postato lo snippet :D
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 Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Facebook e Single Sign On, non vi disperate!
« Risposta #3 il: 14 Marzo 2011, 12:03:00 CET »
0
Sono sempre io ad avere problemi informatici e non solo  :money_mouth:

Sto creando una nuova applicazione e sono andato sul sito da te suggerito: Connexion | Facebook
quando genero una nuova applicazione dal button in alto a destra mi apre una pagina fb dove mi dice:
Il tuo account deve essere verificato prima di poter fare questa azione. Per favore, verifica il tuo account inserendo il tuo telefono cellulare o la carta di credito.
Possibile??? La carta di credito?

Ho dato per adesso il numero di cellulare, ma non mi è arrivato alcun messaggio con il codice di conferma...
è successo anche a voi??

Offline Nicola_D

  • 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: Facebook e Single Sign On, non vi disperate!
« Risposta #4 il: 14 Marzo 2011, 12:51:29 CET »
0
Si,devi dare il tuo numero di cellulare e aspettare il loro SMS!

Sent from my HTC Hero using Tapatalk
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 Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Facebook e Single Sign On, non vi disperate!
« Risposta #5 il: 14 Marzo 2011, 12:56:31 CET »
0
ma a me non è arrivato niente ancora.
Ho provato qualche giorno fa e non mi è arrivato nulla.
Ho riprovato con l'account di mia madre e con un altro numero di cellulare e lo stesso.. niente...


Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Facebook e Single Sign On, non vi disperate!
« Risposta #6 il: 14 Marzo 2011, 16:22:27 CET »
0
ho fatto una ricerca e ho notato che non è solo mio il problema..
Molti hanno scritto il numero di cellulare e non hanno ricevuto l'SMS....
e nessuno rispondeva alla loro richiesta!


COME CAVOLO FACCIO????? MI BLOCCA TUTTO COSI'!!!!!!

Offline Nicola_D

  • 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:Facebook e Single Sign On, non vi disperate!
« Risposta #7 il: 14 Marzo 2011, 16:30:39 CET »
0
ho fatto una ricerca e ho notato che non è solo mio il problema..
Molti hanno scritto il numero di cellulare e non hanno ricevuto l'SMS....
e nessuno rispondeva alla loro richiesta!


COME CAVOLO FACCIO????? MI BLOCCA TUTTO COSI'!!!!!!
un amico ha avuto lo stesso problema, ha riprovato tante volte, poi un giorno per caso gli è arrivato l'sms...
Ti consiglio di riprovare tante volte, e metti come numero di telefono anche il prefisso nazionale +39
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 Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Facebook e Single Sign On, non vi disperate!
« Risposta #8 il: 14 Marzo 2011, 17:10:31 CET »
0
Ce l'ho fatta.. in pratica non bastava dare il numero di cellulare in quel frangente...
bisognava:
1. metterlo nel proprio profilo fb
2. andare su Account -> Impostazioni Account -> Mobile
e seguire la guida per l'attivazione di un cellulare.

Fiùùùù.. meno male.. perchè ho letto di persone che hanno aspettato anche un mese senza arrivarne a capo!

Grazie per lo snippet

Offline teopozzi

  • Utente junior
  • **
  • Post: 67
  • Respect: +1
    • Mostra profilo
Re:Facebook e Single Sign On, non vi disperate!
« Risposta #9 il: 17 Marzo 2011, 13:10:43 CET »
0
Ciao volevo chiederti un aiuto , io ho seguito tutta la procedura che hai spiegato sopra ma da eclipse quando tento di farlo partire mi dice che non trova il file MyGreatApp.apk??

Offline Nicola_D

  • 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:Facebook e Single Sign On, non vi disperate!
« Risposta #10 il: 17 Marzo 2011, 23:00:56 CET »
0
Ciao volevo chiederti un aiuto , io ho seguito tutta la procedura che hai spiegato sopra ma da eclipse quando tento di farlo partire mi dice che non trova il file MyGreatApp.apk??
cos'è MyGreatApp? il tuo progetto? se ti da questo errore,devi fare il build del progetto...
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 teopozzi

  • Utente junior
  • **
  • Post: 67
  • Respect: +1
    • Mostra profilo
Re:Facebook e Single Sign On, non vi disperate!
« Risposta #11 il: 19 Marzo 2011, 09:49:47 CET »
0
si MyGreatApp è il progetto che ho creato, in più il build viene fatto automaticamente in eclipse...

Offline beedme

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Desire
Re:Facebook e Single Sign On, non vi disperate!
« Risposta #12 il: 10 Aprile 2011, 20:44:55 CEST »
0
grazie mille per la guida!

Ora che ho autorizzato l'applicazione come faccio ad aggiornare lo stato?

Io vorrei inserirci del testo in automatico e pubblicarlo su facebook.

Qualcuno può aiutarmi?:)

grazie

Offline Tk.3

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Facebook e Single Sign On, non vi disperate!
« Risposta #13 il: 05 Giugno 2011, 22:33:13 CEST »
0
raga, come posso risolvere se ho fatto tutto, ma l'applicazione in fase di login non mi apre una schermata apposita, ma mi apre facebook sul disopositivo? (tra l'altro non tira fuori i dati che mi servono, quindi è del tutto inutile quello che fa).

Specifico che uso la onActivityResult come mostrato nello snippet, non la startActivityForResult.

Help me, please!

Offline ALEX88-ANDR0!D

  • Utente normale
  • ***
  • Post: 173
  • The Special One
  • Respect: +13
    • Google+
    • droidev88
    • Mostra profilo
  • Dispositivo Android:
    HTC DESIRE HD
  • Sistema operativo:
    WINDOWS 7
Re:Facebook e Single Sign On, non vi disperate!
« Risposta #14 il: 27 Giugno 2011, 16:09:11 CEST »
0
ottimo snippet !!! , appena avro un secondo lo implementerò sicuramente nella mia app
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !