내 AngularJS 웹 응용 프로그램에서 Google 클라우드 저장소에 이미지를 업로드하려고하고 있으며 업로드를 요청하는 동안 Authorization 헤더에있는 액세스 코드가 필요합니다. 액세스 토큰을 얻으려면 JAVA로 개발 된 서버 측에 엔드 포인트를 도입했습니다. 액세스 토큰을 얻으려는 현재 코드는 다음과 같습니다.Google Cloud Storage에 대한 액세스 코드를 얻는 방법은 무엇인가요?
GoogleCredential credential = GoogleCredential.fromStream(new URL("HERE GOES URL OF MY SERVICE ACCOUNT JSON FILE").openStream());
if (credential.createScopedRequired()) {
Collection<String> scopes = StorageScopes.all();
credential = credential.createScoped(scopes);
}
String token = credential.getAccessToken();
log.log(Level.SEVERE, "5 "+token);
그러나 로그에는 null이 표시됩니다.
URL에서 JSON 파일을 가져 오는 이유는 JSON 파일을 동일한 패키지에 넣었을 때 java.security.AccessControlException이 발생했기 때문입니다. 그래서, 내가 Google 드라이브에 파일을 배치하고 위의 코드에서 사용되는 직접 다운로드 링크를 생성하지 않도록하십시오.
액세스 코드를 원하면 웹 앱으로 보내어 업로드를 시작할 수 있습니다. 어떤 도움을 주시면 감사하겠습니다.
고맙습니다.
에 완전한 답변을해야하는 경우? App Engine에서 GCS를 사용하는 대부분의 라이브러리는 자동으로 앱 엔진 서비스 계정으로 인증을 처리합니다. –
@BrandonYarbrough 나는 angularJS에 내장 된 내 웹 앱을 사용하여 GCS에 이미지를 업로드하려고하고 있으며이를 달성하기 위해 인증 헤더에 액세스 토큰을 보내야합니다. –
아, 그러면 클라이언트 측에 액세스 토큰을 보내고 클라이언트가 업로드를 수행하기 위해 토큰을 사용하도록 하시겠습니까? 그렇다면 서명 된 URL과 같은 다른 접근 방식을 사용하는 것이 좋습니다. 액세스 토큰은 서비스 계정이 해당 범위로 수행 할 수있는 모든 권한을 나타냅니다. 예를 들어, 악의적 인 클라이언트가 버킷 및 모든 내용을 삭제할 수 있습니다. –