2013-01-13 15 views
5

Używam tej metody do dopuszczonego do Dysku Google: https://developers.google.com/drive/quickstart-androidGoogleAccountCredential ponowne auth - Dysk Google

Wybierając konto działa świetnie. Teraz chcę przechowywać referencje użytkownika w prefs. Mogę zapisać nazwę konta, a następnie ją resore. Chcę ponownie użyć referencji do przyszłego użytku.

Czy można ponownie skorzystać z Usług Google Play i GoogleAccountCredential?

To jest mój scenariusz:

  1. StartActivity
  2. Szukaj savedCredentials
  3. Jeśli nie -> show Wybór konta (to działa)
  4. Jeśli wybiorę konto - saveCredentians do preferencji użytkownika.

Teraz zamykam aplikację i ponownie biegam.

  1. StartActivity
  2. Szukaj savedCredentials
  3. TAK - tam są zapisane poświadczenia. Chcę ich użyć.

Próbuję coś takiego:

credential = GoogleAccountCredential.usingOAuth2(GoogleDriveBackup.this, DriveScopes.DRIVE_FILE); 

//use saved account (stored[0] is OK) 
credential.setSelectedAccountName(stored[0]); 
credential.getToken(); 
service = getDriveService(credential); 

Gdzie:

private Drive getDriveService(GoogleAccountCredential credential) { 
     return new Drive.Builder(AndroidHttp.newCompatibleTransport(), 
new GsonFactory(), credential).build(); 
     } 

To nie działa. Otrzymuję 500 błędów serwera wewnętrznego od GoogleJsonResponseExcelption. Jaki jest najlepszy sposób na to, korzystając z Usług Google Play na Androida.

+0

Problem polegał na: DriveScopes.DRIVE_FILE. Zmieniłem DriveScopes.DRIVE_FILE na DRIVE, a teraz wszystko działa poprawnie. Nie wiem, czy to błąd usług Play. – adek

Odpowiedz

8

Jeśli próbujesz zrobić to, że użytkownik musi ponownie autoryzować aplikację, nie musisz zapisywać obiektu poświadczeń. Wszystko, co musisz zrobić, to zapisać konto wybrane przez użytkownika za pomocą selektora kont.

Podczas ponownego tworzenia obiektu poświadczeń przy następnym użyciu aplikacji, usługi odtwarzania będą wiedzieć, że użytkownik już wcześniej udzielił dostępu i nie będzie trzeba pokazywać autentycznego zamiaru (dostępne w zgłoszonym wyjątku).

Musisz zapewnić użytkownikowi możliwość zmiany konta, które wybrał.

+0

Tak, właśnie to robię w mojej aplikacji. W moim przykładowym kodzie zapisany [0] ma tylko nazwę konta google ([email protected]). Plik DriveScopes.DRIVE_FILE był niepoprawny. Zmieniłem go na DRIVE i wszystko działa dobrze. – adek

+0

proszę dodaj to jako odpowiedź na własne pytanie i zaakceptuj je. – hcpl

Powiązane problemy