5

Ich entwickle eine Android-Anwendung, die Lese-/Schreibzugriff auf Benutzer Google Drive ermöglichen muss. Darüber hinaus soll es auf öffentlichen Geräten laufen (was bedeutet, dass viele Leute dasselbe Gerät benutzen, um auf ihr Google Drive-Konto zuzugreifen). Unter diesen Umständen ist es nicht akzeptabel, das Konto jedes Nutzers dem Android Account Manager hinzuzufügen. Leider verwenden alle offiziellen Guides die Authentifizierung mit dem auf dem Gerät registrierten Google-Konto. Das Popup zum Auswählen bestehender Google-Konten vom Gerät oder Hinzufügen eines neuen erscheint.LogIn auf Google Drive auf Android ohne Hinzufügen des Google-Kontos zum Gerät

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(); 
     } 
    } 

Was ist die Problemumgehung? Ich muss mich in das Google-Konto einloggen (eigentlich nur auf das Laufwerk), ohne das Konto auf dem Gerät zu speichern. Ich muss mich nur noch einloggen und abmelden, ohne irgendwelche persönlichen Daten auf dem Gerät zu hinterlassen. Wie kann ich es tun?

+0

Sie könnten stattdessen einen Web-Flow in einem eingebetteten Browser verwenden. aber Sie müssten den Cache jedes Mal löschen –

+0

Sind Sie sicher, dass es keine Möglichkeit gibt zu erreichen, was ich will, mit Google Drive Android API? – user2924714

+0

nein ich bin nicht sicher. es ist eine Alternative. –

Antwort

1

Es ist nicht möglich. Nur Konten, die auf dem Gerät registriert sind (authentifiziert von Benutzern selbst), können zur Verbindung mit GooDrive ausgewählt/verwendet werden. Auch wenn Sie konstruieren wie verwenden:

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(); 

(bitte beachten Sie die .setAccountName ([[email protected]])) hat die E-Mail immer noch einer der Vorrichtung registrierten Konten SEIN. Die App kann keine Accounts ansprechen, die der Nutzer nicht selbst authentifiziert hat, es wäre Sicherheits-No-No, oder?

Viel Glück

+0

es ist ein Sicherheitsproblem nur, wenn die App nicht nach dem Passwort fragt. Was ich erwartet habe, ist, dass es eine Möglichkeit geben wird, von dem Benutzer seine Gmail und sein Passwort zu erhalten, und dann eine gesicherte Verbindung zu dem Account herzustellen. In meinem Fall sollte die App auf einem öffentlichen Gerät laufen, so dass es ein Sicherheitsproblem ist, jedes Benutzerkonto dem Gerät hinzuzufügen - sobald ich ein Konto hinzufüge, beginnt es, die Mails, den Kalender, zu synchronisieren. Und ich möchte nur das Google-Laufwerk. Das Hinzufügen des Kontos zu einem öffentlichen Gerät verursacht daher ein Datenschutzproblem. – user2924714

+0

Ich bin kein Googler, nur ein Entwickler wie Sie. Was ich gepostet habe, war mein Wissen aus meiner Erfahrung/Prüfung. Habe im GDAA nichts gefunden, das so funktioniert, wie du es beschreibst. Vielleicht eine andere API. – seanpj