2013-01-13 35 views
5

Tôi đang sử dụng phương pháp này để auth lên Google Drive: https://developers.google.com/drive/quickstart-androidGoogleAccountCredential tái sử dụng auth - Google Drive

tài khoản Chọn đang làm việc tuyệt vời. Bây giờ tôi muốn lưu trữ thông tin đăng nhập của người dùng trong prefs. Tôi có thể lưu tên tài khoản và sau đó resore nó. Tôi muốn sử dụng lại thông tin đăng nhập để sử dụng trong tương lai.

Bạn có thể sử dụng lại Google Play Services và GoogleAccountCredential không?

Đây là kịch bản của tôi:

  1. startActivity
  2. Tìm kiếm savedCredentials
  3. Nếu KHÔNG -> hiển thị bộ chọn tài khoản (điều này đang làm việc)
  4. Nếu tôi chọn tài khoản - saveCredentians vào tùy chọn.

Bây giờ tôi đóng ứng dụng và chạy lại.

  1. startActivity
  2. Tìm kiếm savedCredentials
  3. YES - thông tin có được lưu. Tôi muốn sử dụng chúng.

Tôi đang cố gắng một cái gì đó như thế này:

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

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

đâu:

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

này không hoạt động. Tôi nhận được 500 lỗi Máy chủ nội bộ từ GoogleJsonResponseExcelption. Cách tốt nhất để làm điều đó bằng cách sử dụng Dịch vụ của Google Play dành cho Android.

+0

Vấn đề là: DriveScopes.DRIVE_FILE. Tôi đã thay đổi DriveScopes.DRIVE_FILE thành DRIVE và bây giờ mọi thứ đều hoạt động tốt. Tôi không biết đây có phải là lỗi Dịch vụ của Play hay không. – adek

Trả lời

8

Nếu những gì bạn đang cố gắng làm là tránh người dùng phải cấp lại ứng dụng của bạn thì bạn không cần lưu đối tượng thông tin xác thực. Tất cả những gì bạn cần làm là lưu Tài khoản mà người dùng chọn bằng cách sử dụng bộ chọn tài khoản.

Khi tạo lại đối tượng thông tin vào lần tiếp theo ứng dụng của bạn được sử dụng, dịch vụ phát sẽ biết rằng người dùng đã cấp cho bạn quyền truy cập trước đó và bạn sẽ không phải hiển thị Ý định xác thực (có sẵn trong Ngoại lệ được ném).

Bạn cần cung cấp cách để người dùng thay đổi tài khoản mà anh đã chọn.

+0

Vâng, điều này là một cách tuyệt vời những gì tôi đang làm trong ứng dụng của mình. Trong mã mẫu của tôi được lưu trữ [0] chỉ có tên tài khoản google ([email protected]). DriveScopes.DRIVE_FILE đã sai. Tôi đã thay đổi nó thành DRIVE và mọi thứ hiện đang hoạt động tốt. – adek

+0

vui lòng thêm câu trả lời này làm câu trả lời cho câu hỏi của riêng bạn và chấp nhận câu hỏi đó. – hcpl