Google Drive API DriveId and appFolder의 이해
1. DriveId
Google Drive API를 사용하다보면 DriveId라는게 나오는데 이건 Google Drive (이하GDrive) 의 폴더나 파일등을 구분하는 고유한 id를 의미합니다.
그래서 만약 파일을 만들거나 할때 동일한 파일 이름이 있더라도 overwirte되지 않습니다. 내부적으로 id가 다르기 때문입니다.
API DEMO :
https://github.com/googledrive/android-demos
API DEMO 예제 에서 중요한 사실은 list를 얻어와 보면 자신의 앱에서 만든 파일과 폴더만 보인다는 사실입니다.
전체 파일 접근을 하기 위해서는 Google Drive APIs REST 항목을 검토해야 합니다. 해당 항목을 찾느라 고생을 많이 했습니다.
Google Drive APIs REST :
https://developers.google.com/drive/v3/web/about-sdk
2. appFolder, appDataFolder
앱 폴더라는 개념이 있습니다. App이 구글 드라이브를 액세스할때 특정 앱에서만 보이는 hidden 영역 같은 개념입니다.
PC에서조차 접근은 안되고 삭제는 가능합니다.
삭제 하는 방법은 PC 에서 Google Drive 접속한후 설정으로 진입합니다.
설정에서 애플리케이션 관리를 눌러줍니다.
3. Spaces
한마디로 3가지 공간이 있는데 일반적으로 사용하는게 drive, appFolder, 그리고 구글 포토에서 사용하는 photos 공간이 있습니다.
Spaces
Spaces are isolated storage spaces. Currently there are 3 defined spaces in Drive: drive
, appDataFolder
, and photos
.
- The default
drive
space includes all user-visible files created or stored in Google Drive. PDFs, Google Docs, Sheets, and slides, as well as any other content the user uploads is located in the drive
space.
- The
appDataFolder
space is a separate storage area for per-user application data. Applications typically store configuration files and other data not intended to be directly accessed by users.
- The
photos
space includes all images and videos uploaded to Google Photos.
Files can not move between spaces.
4. 사용
Google Drive를 사용하려면 먼저 어떤 용도를 이용해서 만드는것인지 고민을 해야합니다. 단순히 앱 config 데이터나 백업 용도라면 다른 곳에서 접근이 안되게 해야겠죠. 그러면 appFolder로 제작을 해야합니다. 아래 예제를 보고 접근하면 됩니다.
API DEMO : https://github.com/googledrive/android-demos
하지만 전제적인 drive 접근을 원한다면 아래를 사용해야 합니다.
Google Drive APIs REST : https://developers.google.com/drive/v3/web/about-sdk
root 폴더의 Id는 root 임
https://developers.google.com/drive/v3/web/folder
You can use the alias root to refer to the root folder anywhere a file ID is provided
예) 아래와 같이하면 부모가 root인 폴더 및 파일들이 모두 나옵니다.
FileList result = mService.files().list()
.setPageSize(1000)
.setQ("'root' in parents")
.setFields("nextPageToken, files(id, name, parents)")
.execute();