2015-10-08 11 views
5

Ho implementato il pulsante di accesso Facebook come descritto nella guida per sviluppatori https://developers.facebook.com/docs/facebook-login/android con le autorizzazioni di lettura profilo e email.Android Facebook SDK 4.5.0 Login-Logout Problema Errore hash chiave non valido, durante il tentativo di nuovo accesso

Quando si preme il pulsante di accesso, l'app di Facebook si apre e quindi posso accedere e ottenere dati utente da Facebook. Dopo questo punto, il pulsante Facebook si trasforma automaticamente nel pulsante Disconnetti. E quando viene premuto, si disconnette. Finora, funziona bene.

Una volta effettuato il logout di Facebook nel mio lato app, e si desidera effettuare nuovamente l'accesso con il pulsante Facebook, Facebook non riesce con errore di hash della chiave. Se apro le impostazioni dell'account nell'app Facebook e rimuovo la mia app dall'elenco, il re-login restituisce il successo.

Ho anche provato la soluzione qui Android Facebook app logout issue ma non ha funzionato neanche. Per cancellare, io uso questo codice (che si trova in comune nome pref in classe AccessTokenCache):

SharedPreferences fbSharedPreferences = this.getSharedPreferences("com.facebook.AccessTokenManager.SharedPreferences", 0); 
    if (fbSharedPreferences != null) { 
     fbSharedPreferences.edit().clear().commit(); 
    } 

Sto utilizzando Facebook SDK 4.5. Sto testando con un vero account Facebook. I miei tasti e gli hash dell'app sono impostati nelle impostazioni dell'app Facebook.

P.S. Il titolo della domanda è influenzato da Facebook Login-Logout Issue Invalid Key Hash Error, While Trying to Login Again (che non ha una soluzione).

risposta

2

Avevo lo stesso problema, è necessario eliminare l'app dall'app di Facebook e quindi uscire. Seguendo la funzione farà il trucco.

public void disconnectFromFacebook() { 

    if (AccessToken.getCurrentAccessToken() == null) { 
     return; // already logged out 
    } 

    new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest 
      .Callback() { 
     @Override 
     public void onCompleted(GraphResponse graphResponse) { 

      LoginManager.getInstance().logOut(); 

     } 
    }).executeAsync(); 
} 
+0

Sì, funziona quando si elimina l'app manualmente dalle impostazioni dell'account Facebook. – enver

+0

Esattamente, il codice sopra cancellerà l'app dall'elenco delle app di Facebook. –

+0

Questo funziona in questo senso. Ma uno svantaggio è che rende il token di accesso non valido e non più utilizzabile. – enver