3

내 안드로이드 앱에서 Google Cloud Storage에 이미지를 업로드하고 싶습니다. 이를 위해 나는 GCS JSON Api이이 기능을 제공한다는 것을 조사했다. 나는 그 사용법을 보여주는 안드로이드 샘플에 대한 많은 연구를했다. developer site에서는 java 만 지원하는 코드 예제를 제공합니다. Android에서 해당 API를 사용하는 방법을 모르겠습니다. 나는 thisthis 링크를 언급했지만 많은 아이디어를 얻을 수 없었다. 안드로이드 애플 리케이션과 함께이 API를 사용할 수있는 방법에 나를 안내하십시오.Google Cloud Storage 사용 Android에서 JSON API 사용

+0

찾았습니까? @ 자키? –

+1

@chelo_c 아니요, 대신에 Google Cloud에 이미지를 저장하기 위해'Blobstore'를 사용하고 있습니다. – zanky

답변

8

안녕하세요. 제가 해결 했으므로 클라우드 스토리지에 내 이미지가 업로드되었습니다. 이것은 다음과 같습니다.

참고 : 저는 XML API를 거의 동일하게 사용했습니다.

처음으로, 많은 라이브러리를 다운로드해야합니다. 가장 쉬운 방법은 maven 프로젝트를 생성하고 필요한 모든 의존성을 다운로드하도록하는 것입니다. 이 샘플 프로젝트에서 : Sample Project 라이브러리는해야한다 :

enter image description here

둘째, 당신은 api console 당신은 프로젝트를 만들어야합니다 사용하여 클라우드 스토리지에 대해 잘 알고 있어야합니다, 양동이를 작성, 버킷을 제공 권한 등 당신은 그 here

셋째에 대한 자세한 내용을 확인할 수 있습니다 모든 것들의 것이란 일단 코딩을 시작할 시간입니다. 이미지를 업로드하려고합니다. 클라우드 저장소는 OAuth와 작동하므로 API를 사용하려면 인증 된 사용자 여야합니다. 이를 위해서는 Service Accounts을 사용하여 인증하는 것이 가장 좋습니다.

enter image description here

우리는 우리의 코드에이 서비스 계정을 사용합니다 : 그것에 대해 걱정 말라, 당신이해야 할 유일한 것은이 같은 서비스 계정을 얻을 API 콘솔입니다.

제 4의은 일부 코드를 작성하고 이미지를 클라우드 저장소에 업로드 할 수 있습니다. 이 코드를 실행하려면 3 단계에서 생성 한 키를 assets 폴더에 넣어야합니다. 이름을 "key.p12"로 지정했습니다.

키를 제공하지 않으므로 프로덕션 버전에서이 작업을 수행하지 않는 것이 좋습니다.

try{ 
httpTransport= new com.google.api.client.http.javanet.NetHttpTransport(); 


//agarro la key y la convierto en un file 
AssetManager am = context.getAssets(); 
InputStream inputStream = am.open("key.p12"); //you should not put the key in assets in prod version. 



//convert key into class File. from inputstream to file. in an aux class. 
File file = UserProfileImageUploadHelper.createFileFromInputStream(inputStream,context); 


//Google Credentianls 
GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport) 
     .setJsonFactory(JSON_FACTORY) 
     .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) 
     .setServiceAccountScopes(Collections.singleton(STORAGE_SCOPE)) 
     .setServiceAccountPrivateKeyFromP12File(file) 
     .build(); 




String URI = "https://storage.googleapis.com/" + BUCKET_NAME+"/"+imagename+".jpg"; 
HttpRequestFactory requestFactory = httpTransport.createRequestFactory(credential); 


GenericUrl url = new GenericUrl(URI); 




//byte array holds the data, in this case the image i want to upload in bytes. 

HttpContent contentsend = new ByteArrayContent("image/jpeg", byteArray); 


HttpRequest putRequest = requestFactory.buildPutRequest(url, contentsend); 



com.google.api.client.http.HttpResponse response = putRequest.execute(); 
String content = response.parseAsString(); 
Log.d("debug", "response is:"+response.getStatusCode()); 
Log.d("debug", "response content is:"+content);} catch (Exception e) Log.d("debug", "Error in user profile image uploading", e);} 

이미지를 클라우드 버킷에 업로드합니다.

api에 대한 자세한 내용은이 링크를 확인하십시오. Cloud XML API

+0

shoud 내가 프로덕션 버전에서 p12 키를 넣은 자산이 아니라면? 고마워요 – Cristiana214

+0

@ Cristiana214 메신저 아직도 생산에 있지 그래서 나는 그것에 대해 tjought하지 않았습니다. 그러나 문제는 p12 키를 제공하면 다른 누군가가 API에 액세스 할 수 있다는 것입니다. –

+0

모든 코드를 알려주시겠습니까? JSON_FACTORY, STORAGE_SCOPE ...이 무엇인지 모릅니다. – tamtoum1987

관련 문제