2014-11-25 18 views
8

Ho un'app di installazione che si collega a Google Fit, legge e scrive alcuni dati sul corpo degli utenti. Quando l'utente disattiva Google Fit nelle impostazioni applicazioni, cerco di revocare le mie applicazioni autorizzazioni per chiamando:Come disattivare Google Fit e revocare le autorizzazioni dall'app stessa

public void disableGoogleFit(){ 
    if(!mClient.isConnected()){ 
     Log.e(TAG, "Google Fit wasn't connected"); 
     return; 
    } 
    PendingResult<Status> pendingResult = Fitness.ConfigApi.disableFit(mClient); 

    pendingResult.setResultCallback(new ResultCallback<Status>() { 
     @Override 
     public void onResult(Status status) { 
      if(status.isSuccess()) { 
       Log.i(TAG, "Google Fit disabled"); 
      }else{ 
       Log.e(TAG, "Google Fit wasn't disabled " + status); 
      } 
     } 
    }); 
} 

Anche se ho potuto leggere correttamente i dati/scrittura, disabilitando Fit mi restituisce l'errore:

Google Fit wasn't disabled Status 
{statusCode=unknown status code: 5010, resolution=null} 

Edit1: Aggiunto intero metodo, in cui è visibile, quel client è connesso nel momento in cui provo disabilitare Fit.

+0

è stato il tuo client connesso al momento della chiamata a disattivare? – SimpleGuy

+0

Sì, è collegato – Jaroslav

+0

Se autorizzato ad accedere a Fit, vede la tua app elencata nell'app Impostazioni Google sotto Google Fit> App e dispositivi collegati? In caso contrario, prova a seguire i passaggi per abilitare l'API di fitness a: https://developers.google.com/fit/android/get-started#step_3_enable_the_fitness_api – saxman

risposta

0

Come per il forum degli sviluppatori Android

https://developer.android.com/reference/com/google/android/gms/fitness/ConfigApi.html

public static final int APP_NOT_FIT_ENABLED

Status code denotes that an app was not found in the list of connected apps in Google Fit. Signifies that either access to the app was already revoked, or the app is not registered on the developer's console.

Constant Value: 5010 (0x00001392)

e di chiamare un disableFit, cliente deve essere collegato al momento della chiamata

public abstract PendingResult<Status> disableFit (GoogleApiClient client) 

Disabilita Google Misura per un'app. Può essere utilizzato per revocare tutte le autorizzazioni di accesso OAuth concesse da un'app e di conseguenza rimuovere tutte le iscrizioni e registrazioni esistenti dell'app.

Parametri

client an existing GoogleApiClient. Must be connected at the time of this call.

+0

Come ho scritto nella mia domanda: il client è connesso quando provo a disconnettermi. – Jaroslav

+0

Per il debug, puoi provare questo? If (mClient.isConnected()) -> prova disableFIT solo altrimenti stampa 'Client not connected' – SimpleGuy

+0

OK, ho aggiornato la mia domanda. – Jaroslav

2

Ho anche affrontato problema simile.

This issue occurs if app is not registered properly in google developer console.

Penso che vi siete registrati app su Console per gli sviluppatori di Google tramite impronta digitale certificato di produzione chiavi (SHA1) dove, come si sta testando su app che ha di debug chiavi.

Eseguire seguenti fasi:

  1. Creare un altro Id client utilizzando il certificato di debug chiavi di impronte digitali (SHA1).
  2. Disinstallare l'app esistente.
  3. Installa app & connettersi a Google in forma.
  4. Controlla sotto google fit app & assicurati che l'app sia elencata come app connessa (...> Impostazioni> App connesse> App connesse &).
  5. Ora eseguire il codice sopra & funzionerà !!!
2

Mi sono imbattuto in questo problema se ho revocato l'accesso sul lato di Google Fit dell'operazione anziché chiamare il metodo disableFit(). Quando si utilizza il metodo disableFit(), le cose si sono disconnesse bene e la riconnessione è stata una passeggiata. Ma quando Google Fit ha revocato l'accesso non elimina l'esistente OAuth e quindi sei bloccato nel limbo. Limbo in cui sei disconnesso ma nessuna sfida OAuth è stata rilasciata, così continuerai a ricevere l'errore 5010.

L'unica soluzione che ho trovato è stata la sfida OAuth connettendomi a un altro account. Allora stavi bene. Questo suona come un problema su Google Fit, tuttavia, e nulla sul lato client.

0

Dopo la disabilitazione delle chiamate

mClient.disconnect(); 

Che è lavorato per me

Problemi correlati