• 목록
  • 아래로
  • 위로
  • 5
  • 네모
  • 조회 수 1744

1531053644050.jpg

- 이미지 출처 : www.infofueguina.com -

 

 

 

 

구글 드라이브 API를 사용하여 사이트의 첨부파일을 업로드 할 때, 업로드한 파일의 소유자를 변경할 필요가 있다.

서비스계정을 사용한다면 드라이브의 유료결제 공간을 사용할 수 없으므로 당연히 필요할 것이고,

각자의 계정을 통해(OAuth2) 업로드를 진행한다고 홰도, 업로더가 파일을 삭제하면 첨부파일을 사용할 수 없게 되므로 소유자 변경이 꼭 필요하다.

 

 

 

그러나 구글은 보안상의 문제로 몇몇 형식을 제외하고는 소유권 이전을 할 수 없도록 막아두었다.

허용된 파일은 구글 문서, 스프레드시트, 프레젠테이션, 설문지, 드로잉, 지도, 폴더로 총 7가지 종류가 있으나,

첨부파일로 올라오는 파일들의 대부분은 저 7개를 만족하지 못한다.

 

 

 

 

 

그래서 조금 번거롭고 아니꼽지만 약간의 꼼수를 사용해야 한다.

 

구글 스크립트(https://script.google.com/) 라는 서비스가 있다.

정확한 서비스명은 구글 앱스 스크립트(GAS) 라고 하는것 같다만, 도메인명은 그냥 script.google 이니 구글 스크립트라고 부르자.

 

어쨌든, 해당 서비스를 사용하면 소유권을 이전할 수 있다.

소유권 이전까지의 흐름은 아래와 같다.

 

 

 

1. API로 파일을 업로드 한다.

2. 업로드한 파일에 소유권을 이전할 계정으로 읽기 권한을 부여한다.

3. 구글 스크립트로 소유권을 이전할 계정의 드라이브에 업로드한 파일을 복사한다.

4.복사한 파일에 기존 업로더의 권한을 부여한다.

5. 기존에 업로드한 파일을 삭제한다.

6. 복사한 파일을 사용하여 다운로드 URL 등을 처리한다.

 

 

 

 

 

나의 경우 폴더를 하나 생성하고, 서비스계정과 유료계정의 권한을 지정한 뒤 해당 폴더에 이동시키는 방식을 사용했다.

아래는 구글 스크립트에서 사용할 수 있는 코드의 예제이다.

 

20180708213556.png

 

code.gs

 

 

웹앱 URL을 생성한 뒤, 파라미터로 fileId=***&folderId=*** 를 추가하여 curl 등의 방식으로 요청하면 된다.

웹앱 URL 생성시 모든 사용자(익명 포함)으로 지정하고, fileId와 folderId 두개 모두에게 권한이 있어야 한다.

 

작성자
네모 71 Lv. (45%) 408540/414720EXP

인스타그램 : http://instg.me/nemo_9l

댓글 5

abnoeh
profile image
저러면 모든 업로드 계정 비밀번호를 관리자가 알고 있어야 하는거 아닌가요?
comment menu
2018.07.08. 22:37

신고

"abnoeh님의 댓글"

이 댓글을 신고 하시겠습니까?

네모 작성자 → abnoeh
profile image
구글 스크립트에서는 스크립트 실행 주체를 선택할 수 있습니다.
어떤 유저가 실행하더라도 관리자 계정으로만 실행이 되는 방식으로도 설정이 가능합니다.
그게 기본값이기도 하구요.
comment menu
2018.07.08. 22:40

신고

"네모님의 댓글"

이 댓글을 신고 하시겠습니까?

NoYeah
profile image
이거 잘 응용하면 호스팅 용량을 (라이믹스의 files 폴더)를 구글 드라이브에서 불러오도록 할 수 있겠네요.
comment menu
2018.07.09. 00:07

신고

"NoYeah님의 댓글"

이 댓글을 신고 하시겠습니까?

네모 작성자 → NoYeah
profile image
네. 그 기능을 제작하다가 소유권 이전이 잘 되지 않아서 어찌저찌 떠올린 방법입니다.
comment menu
2018.07.09. 00:11

신고

"네모님의 댓글"

이 댓글을 신고 하시겠습니까?

abnoeh → NoYeah
profile image
그런식으로 긁어오게 하면 api 제한 (한 유저는 100초에 1000번만 요청 가능)에 걸리지 않을까요?
https://console.developers.google.com/apis/api/drive.googleapis.com/quotas?pli=1


Queries per day 1,000,000,000
Queries per 100 seconds per user 1,000
Queries per 100 seconds 10,000
comment menu
2018.07.09. 20:05

신고

"abnoeh님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 789
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 4460
406 국가별 연말 휴무일 정보 이니스프리 이니스프리 18.12.25.09:28 413
구글 드라이브 API 사용시 파일 소유자 변경 5 image 네모 네모 18.07.08.21:41 1744
404 구글 검색 Tip image 슬기 슬기 19.10.14.11:42 119
403 경험치에 관련해서 문의가 많군요. 조금 정리해봤습니다. 10 마스터 마스터 16.09.16.22:59 381
402 게시글 이동시 포인트는 차감됩니다. image 에듀 title: 맛스타의 자물쇠에듀 16.12.03.22:34 258
401 개인용 vs 기업용 라이선스에 대해 11 이니스프리 이니스프리 20.05.05.12:18 5426
400 개인 파일을 쉽게 호스팅 해보자!! [ OneDrive ] 11 image TVJ title: 열려라 맛스타의 자물쇠TVJ 17.04.29.12:24 602
399 갓모드를 만들어 봅시다 [윈도우 10] 9 image TVJ title: 열려라 맛스타의 자물쇠TVJ 17.07.24.00:01 549
398 각 카드사별 해외이용 정지방법(2018.04.06) 4 image 자뻑보이 자뻑보이 18.05.28.19:04 2171
397 가상PC(vmware,virtualbox)에서 사용가능한 리눅스 배포본 해피보이 20.04.25.10:28 388
396 [할인정보]험블번들에서 데몬툴즈를 싸게 구매하자! 9 Dobob title: 도밥위키!Dobob 17.02.21.22:32 335
395 [할인정보] 핫스팟쉴드 엘리트 VPN 평생 이용권 99.99달러 3 이니스프리 이니스프리 17.02.09.23:25 1185
394 [할인정보] 판다 글로벌 프로텍션 2,700원 (1년 1PC) 5 이니스프리 이니스프리 17.03.11.23:30 342
393 [할인정보] 트렌드마이크로 맥시멈 시큐리티 80% 할인! image 이니스프리 이니스프리 17.01.31.18:38 281
392 [할인정보] 크록스 50~75% 할인 이벤트 3 image 이니스프리 이니스프리 17.02.20.00:52 219
391 [할인정보] 콰트로치즈와퍼주니어 44% 할인 + 오리지널 또는 골드 치킨프라이 50% 할인 3 image 이니스프리 이니스프리 17.03.13.12:18 208
390 [할인정보] 이니스프리 2/15-2/18 올해 첫 빅 세일! (최대 50% 할인) 2 이니스프리 이니스프리 17.02.15.19:51 269
389 [할인정보] 스와로브스키 50% 할인 image 이니스프리 이니스프리 17.01.22.22:45 172
388 [할인정보] 비트디펜더 50% 할인 이벤트 이니스프리 이니스프리 17.02.05.22:35 312
387 [할인정보] 비트디펜더 48시간 스페셜 오퍼! 2 image 이니스프리 이니스프리 17.03.25.10:56 523