5

Tôi có một ứng dụng Android cuối cùng sẽ lưu trữ nội dung do người dùng tạo trong nhóm Google Cloud Storage. Nhưng tôi không thể làm như vậy từ mã ứng dụng của mình. Mã trông giống như sau:Xác thực tài khoản dịch vụ từ ứng dụng Android cho Google Cloud Storage

JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); 
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
KeyStore keystore = SecurityUtils.getPkcs12KeyStore(); 
keystore.load(resources.openRawResource(R.raw.secret), "***password***".toCharArray()); 
PrivateKey key = (PrivateKey)keystore.getKey("privatekey", "***password***".toCharArray()); 
credential = new GoogleCredential.Builder() 
.setTransport(httpTransport) 
.setJsonFactory(new JacksonFactory()) 
.setServiceAccountPrivateKey(key) 
.setServiceAccountId("**************@developer.gserviceaccount.com") 
.setServiceAccountScopes(Collections.singleton(StorageScopes.DEVSTORAGE_READ_WRITE)) 
.build(); 
credential.refreshToken(); 
String URI = "https://storage.googleapis.com/"+BUCKET_NAME; 
HttpRequestFactory requestFactory = httpTransport.createRequestFactory(credential); 
GenericUrl url = new GenericUrl(URI); 
HttpRequest request = requestFactory.buildGetRequest(url); 
HttpResponse response = request.execute(); 
String content = response.parseAsString(); 
Log.d("testing", "response content is: " + content); 
new Storage.Builder(httpTransport, JSON_FACTORY, credential).setApplicationName("Doubts").build(); 

Tôi gặp nhiều lỗi khác nhau. Một trong số đó là:

java.security.KeyStoreException: java.security.NoSuchAlgorithmException: KeyStore JKS implementation not found 

Tài liệu chính thức chỉ đơn giản là bỏ qua trường hợp sử dụng từ ứng dụng Android.

+1

binaryking> Thậm chí nếu điều này làm việc - bạn sẽ nhúng khóa bí mật/mật khẩu bên trong ứng dụng android của bạn ?? – Jasper

Trả lời

1

Tôi khuyên bạn nên chịu trách nhiệm cho phép yêu cầu ra khỏi ứng dụng Android của bạn, vì nó không được coi là khách hàng "đáng tin cậy". Một thực hành tốt để làm theo sẽ là tạo ra một máy chủ URL đã ký tên và gửi cho khách hàng để sau này có thể sử dụng nó để tải tệp lên các nhóm của bạn một cách an toàn và mờ đục. Bằng cách này, bạn cũng sẽ loại bỏ sự phức tạp và tiếp xúc với thông tin đăng nhập riêng tư tự nhiên từ khách hàng của mình.

Bạn có thể tìm thêm về URL ký trong official docs

Các vấn đề liên quan