5

Sviluppo un'applicazione Android che deve consentire l'accesso in lettura/scrittura all'unità google dell'utente. Inoltre, si suppone che funzioni su dispositivi pubblici (il che significa che molte persone potrebbero utilizzare lo stesso dispositivo per accedere al proprio account di Google Drive). In tali circostanze, è inaccettabile aggiungere l'account di ciascun utente a Gestione account Android. Sfortunatamente, tutte le guide ufficiali utilizzano l'autenticazione con l'account google registrato sul dispositivo. Viene visualizzato il popup di selezione degli account Google esistenti dal dispositivo o l'aggiunta di uno nuovo.Accedi a Google Drive su Android senza aggiungere l'account google al dispositivo

protected void onStart() { 
     super.onStart(); 
     if (mGoogleApiClient == null) { 
      mGoogleApiClient = new GoogleApiClient.Builder(this) 
        .addApi(Drive.API) 
        .addScope(Drive.SCOPE_FILE) 
          // Optionally, add additional APIs and scopes if required. 
        .addConnectionCallbacks(this) 
        .addOnConnectionFailedListener(this) 
        .build(); 
     } 
     mGoogleApiClient.connect(); 
    } 



    /** 
    * Called when {@code mGoogleApiClient} is trying to connect but failed. 
    * Handle {@code result.getResolution()} if there is a resolution 
    * available. 
    */ 
    @Override 
    public void onConnectionFailed(ConnectionResult result) { 
     Log.i(TAG, "GoogleApiClient connection failed: " + result.toString()); 
     if (!result.hasResolution()) { 
      // Show a localized error dialog. 
      GooglePlayServicesUtil.getErrorDialog(
        result.getErrorCode(), this, 0, new OnCancelListener() { 
         @Override 
         public void onCancel(DialogInterface dialog) { 
          retryConnecting(); 
         } 
        }).show(); 
      return; 
     } 
     // If there is an existing resolution error being displayed or a resolution 
     // activity has started before, do nothing and wait for resolution 
     // progress to be completed. 
     if (mIsInResolution) { 
      return; 
     } 
     mIsInResolution = true; 
     try { 
      result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION); 
     } catch (SendIntentException e) { 
      Log.e(TAG, "Exception while starting resolution activity", e); 
      retryConnecting(); 
     } 
    } 

Qual è la soluzione? Devo accedere all'account google (in realtà solo sull'unità) senza salvare l'account sul dispositivo. Devo solo effettuare il login e il logout al termine, senza lasciare alcuna informazione personale sul dispositivo. Come posso farlo?

+0

si potrebbe invece utilizzare un flusso Web in un browser incorporato. ma dovresti cancellare la cache ogni volta –

+0

Sei sicuro che non c'è modo di ottenere ciò che voglio, usando google drive android api? – user2924714

+0

no non sono sicuro. è un'alternativa. –

risposta

1

Non è possibile. Solo gli account registrati sul dispositivo (autenticati dagli utenti stessi) possono essere selezionati/utilizzati per connettersi a GooDrive. Anche se è possibile utilizzare come costruire:

mGoogleApiClient = new GoogleApiClient.Builder(this) 
        .addApi(Drive.API) 
        .addScope(Drive.SCOPE_FILE) 
          // Optionally, add additional APIs and scopes if required. 
        .addConnectionCallbacks(this) 
        .addOnConnectionFailedListener(this) 
        .setAccountName([[email protected]]) 
        .build(); 

(si prega di notare la .setAccountName ([[email protected]])), l'e-mail deve essere ancora uno degli account dei dispositivi registrati. L'app non può rivolgersi ad account che l'utente stesso non ha autenticato, sarebbe la sicurezza no-no, giusto?

Good Luck

+0

è un problema di sicurezza solo se l'app non richiede la password. Quello che mi aspettavo è che ci sarà la possibilità di ottenere dall'utente la sua gmail e la sua password, e quindi di creare una connessione sicura all'account. Nel mio caso, l'app dovrebbe funzionare su un dispositivo pubblico, quindi è un problema di sicurezza aggiungere ogni account utente al dispositivo - non appena aggiungo un account, inizia a sincronizzare i messaggi, il calendario. E voglio solo il disco di Google. Quindi aggiungere l'account a un dispositivo pubblico crea un problema di privacy – user2924714

+0

Non sono un googler, solo uno sviluppatore come te. Quello che ho postato è stata la mia conoscenza della mia esperienza/test. Non ho trovato nulla nella GDAA che funzionasse nel modo in cui descrivi. Forse un'API diversa. – seanpj