2013-01-13 16 views
5

私はGoogleドライブするには、authするために、このメソッドを使用しています:アカウントを選択する https://developers.google.com/drive/quickstart-androidGoogleAccountCredential再利用AUTH - Googleドライブ

は素晴らしい取り組んでいます。今私は、ユーザーの資格情報をprefsに保存したい。私はアカウント名を保存し、それを再開することができます。私は、将来の使用のために資格情報を再利用したい。

Google PlayサービスとGoogleAccountCredentialを使用して再認証することはできますか?

これは私のシナリオです:

  1. StartActivity
  2. savedCredentialsを検索する
  3. れていない場合 - 私はアカウントを選択した場合>
  4. (これが働いている)アカウントピッカーを表示 - 好みにsaveCredentians。

今度はアプリケーションを閉じてもう一度実行します。

  1. StartActivity
  2. savedCredentials
  3. を検索YES - 保存された資格情報があります。私はそれらを使いたい。

私はこのような何かしようとしている:これは動作しない

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

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

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

を。 GoogleJsonResponseExcelptionから500の内部サーバーエラーが発生しています。 Android用Google Playサービスを使用してこれを行うには、どのような方法が最適ですか。

+0

問題はDriveScopes.DRIVE_FILEです。 DriveScopes.DRIVE_FILEをDRIVEに変更しましたが、今はすべて正常に動作しています。これがPlayサービスのバグかどうかはわかりません。 – adek

答えて

8

あなたがしようとしているのは、ユーザーがあなたのアプリケーションを再認証しなければならない場合、資格情報オブジェクトを保存する必要はありません。アカウントピッカーを使用してユーザーが選択したアカウントを保存するだけです。

次回にアプリケーションを使用したときに再生サービスがユーザーにアクセス権を既に与えていることを知り、認証インテントを表示する必要がなくなります)。

あなたが選択したアカウントをユーザーが変更する方法を提供する必要があります。

+0

はい、これは私がアプリでやっていることです。私のサンプルコードでは、[0]にはGoogleアカウント名([email protected])しかありません。 DriveScopes.DRIVE_FILEが間違っていました。私はそれをDRIVEに変更しました。 – adek

+0

これをあなた自身の質問に対する回答として追加し、それを受け入れてください。 – hcpl