2013-01-13 59 views
5

我用這種方法來驗證機制來谷歌驅動器: https://developers.google.com/drive/quickstart-androidGoogleAccountCredential重複使用身份驗證 - 谷歌驅動

選擇賬戶是偉大的工作。現在我想將用戶憑證存儲在首選項中。我可以保存帳戶名稱,然後重新提交。我想重用憑證以備將來使用。

使用Google Play服務和GoogleAccountCredential有可能使用reuth嗎?

這是我的情景:

  1. StartActivity
  2. 搜索savedCredentials
  3. 如果沒有 - >顯示帳戶選擇器(這是工作)
  4. 如果讓我選擇的帳戶 - saveCredentians喜好。

現在我關閉我的應用程序並重新運行。

  1. StartActivity
  2. 搜索savedCredentials
  3. 是 - 有保存的憑據。我想用它們。

我想是這樣的:

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

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

其中:

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

這是行不通的。我收到來自GoogleJsonResponseExcelption的500個內部服務器錯誤。使用適用於Android的Google Play服務的最佳方式是什麼?

+0

問題是:DriveScopes.DRIVE_FILE。我已將DriveScopes.DRIVE_FILE更改爲DRIVE,現在一切正常。我不知道這是否是播放服務錯誤。 – adek

回答

8

如果您要做的是避免用戶必須重新授權您的應用程序,那麼您不需要保存憑證對象。所有喲需要做的是保存用戶使用帳戶選擇器選擇的帳戶。

在下次使用您的應用程序時重新創建憑證對象時,播放服務將知道用戶已經授予您訪問權限,您將不必顯示auth Intent(可在拋出的Exception中使用) )。

您確實需要提供一種方法讓用戶更改他選擇的帳戶。

+0

是的,這是我在我的應用程序中做的事。在我的示例代碼存儲[0]只有谷歌帳戶名稱([email protected])。 DriveScopes.DRIVE_FILE錯了。我已將它更改爲DRIVE,現在一切正常。 – adek

+0

請將此添加爲您自己的問題的答案並接受它。 – hcpl