2015-05-11 25 views
5

Ho incontrato questo problema alcune volte, ma non ho mai potuto puntare il dito su di esso, attribuendolo alla latenza GDAA's, al mio codice bacato, ecc ... I finalmente sono riuscito a creare uno scenario in cui posso riprodurlo tranquillamente, quindi vorrei chiedere a persone che conoscono se è una caratteristica che non capisco o un insetto. Se è il caso, per favore indicami il punto in cui posso lamentarmi.L'utente che disconnette l'applicazione in Drive causa la perdita di dati in ambito FILE

Lo discuterò sullo sfondo dell'API REST per semplicità.

1/Diamo uno app autenticato unità API che gira sotto portata DRIVE_FILE

com.google.api.services.drive.Drive svc = 
    new Drive.Builder(
    AndroidHttp.newCompatibleTransport(), 
    new GsonFactory(), 
    GoogleAccountCredential 
    .usingOAuth2(context, Collections.singletonList(DriveScopes.DRIVE_FILE)) 
).build(); 

2/creare un file (file/cartelle) nell'unità Google utilizzando

svc.files().insert([METADATA], [CONTENT]).execute(); 

3/cerca gli oggetti che hai creato usando

svc.files().list().setQ([QUERY]).setFields([FIELDS]).execute(); 

Quando l'app viene eseguita, l'utente passa attraverso la solita routine Account-Pick/Drive-Authorize e tutto funziona come previsto. I file vengono creati, visibile, può essere trovato ... finché un utente non revoca l'autorizzazione mediante

Impostazioni> Gestisci Applicazioni> Disconnetti da Drive

in drive.google.com.

Dopodiché, se l'app Android viene riavviata (e autorizzata di nuovo), nessuno degli oggetti creati prima della revoca è visibile.

Potrebbe essere di progettazione, non lo so. Se questo è il caso, non riesco a trovare un modo in cui l'app Android può arrivare a tutto ciò che ha creato prima. Potrei sicuramente creare un'altra app di "manutenzione" con scope DRIVE per risolvere questo problema, ma ...

Ora, nel caso di GDAA, diventa ancora peggio. Non solo GDAA non ha l'ambito DRIVE per risolverlo, ma se viene eseguita la stessa sequenza di passaggi e l'app crea un file/cartella immediatamente dopo la revoca, GDAA non si lamenta, ma il file/cartella non viene creato affatto. Dopo un po '(minuti) viene visualizzata la riabilitazione, ma i file creati nel frattempo non si trovano da nessuna parte e tutto ciò che precede la revoca viene perso anche dall'app (creatore) (è certamente visibile in l'app web che ovviamente ha DRIVE come scope).

Grazie per la vostra pazienza.

+0

È la vostra aspettativa che i file creati previa autorizzazione revocata saranno disponibili alla riautorizzazione con l'ambito drive.file? –

+1

Assolutamente. Io (un utente di un'app) ho migliaia di file creati dall'app. Poi lui/lei/io giochiamo con "Disconnetti dall'azionamento". Dopo aver avviato l'app, chiede di autorizzare nuovamente l'accesso ai file creati dall'app. E OOPS, non c'è più niente. L'ambito FILE dice "oggetti creati da questa app" .. – seanpj

+0

Sono d'accordo che è una brutta esperienza. Stiamo discutendo dell'aggiornamento della finestra di disconnessione e del testo dell'ambito dell'app per chiarire il comportamento. – Daniel

risposta

3

La prima questione è:

  1. Un utente revochi l'autorizzazione tramite: Impostazioni> Gestisci applicazioni> Disconnetti da Drive
  2. reauthorizes Poi che App
  3. Files questa applicazione è stato autorizzato a vedere con ambito DRIVE_FILE sono non più autorizzato.

Questo è il comportamento previsto delle API REST e Android.

Non pensiamo che gli utenti si aspettino intuitivamente che tutti i file precedentemente autorizzati vengano nuovamente autorizzati. L'utente potrebbe non ricordare i file precedentemente autorizzati e informare gli utenti che questi file saranno nuovamente autorizzati potrebbe causare confusione.

Il secondo problema è il comportamento di GDAA per la creazione di cartelle in questa situazione. Al momento non supportiamo CompletionEvents per le creazioni di cartelle, ma questo è qualcosa su cui verificheremo.

+0

Buono a sapersi, grazie. Anche se evento improbabile, succederà agli sviluppatori durante i test. L'altro scenario, un prodotto di ambito FILE sotto l'attacco di un utente "giocoso" potrebbe essere gestito dall'educazione degli utenti nel dialogo che Daniel ha menzionato nel suo commento. – seanpj

+0

Matt, non so se sei un membro interno, ma c'è un altro problema simile in [SO 33248420] (http://stackoverflow.com/questions/33248420/invalid-parent-folder-error-for-appfolder- in-drive-API). Qualche idea? – seanpj

+0

@Matt, i miei test hanno dimostrato che se si utilizza l'API REST, i.imgur.com/1jJPkiS.png si riapre nuovamente quando "revocherà l'autorizzazione". Tuttavia, se si utilizza GDAA, i.imgur.com/1jJPkiS.png non viene più visualizzato. Quindi, l'operazione di guida è sempre fallita. –