現在網路空間愈來愈多,Google Drive也是其中一個熱門的空間,不但空間大且還能夠與Google其他雲端服務整合使用,而我們有時候會有用程式來存取Google Drive的需求,本篇教學如何申請並使用Google Drive API來存取檔案, (Google OAuth 驗證方式有很多種,本篇為不需要頁面驗證就能夠使用的當作範例)
首先開啟 Google API Console(https://console.developers.google.com/)
進入頁面,點 [建立專案] 按鈕
接著填寫自己想要的專案名稱,並按下建立
建立完成後點 [啟用API和服務] 之後搜尋 Google Drive API 並點選它
點選[啟用]
因為程式要能夠使用Google Drive API,就需要取得憑證
點選左邊選單中的[憑證],並且點[建立憑證]
我們這裡的需求是讓程式可以上傳檔案到Google Drive中,中間並不會有人為介入做驗證的動作,所以屬於 [其他非使用者介面],所以將 [ API 的呼叫來源為何?] 選擇 [其他非使用者介面],要存取的資料選擇[應用程式資料],之後點[我需要哪些憑證]
這是一個非使用者介面操作的憑證,所以需要建立Service Account (這會被Google視為一個獨立的帳號)
這時候要選擇這個Service Account要能有什麼權限,例如唯讀或是可以編輯,這邊依據自己使用情境選擇
金鑰類型普遍都用JSON居多,如有其他需求可以自行選擇P12
接著按下 [繼續]
接著會產生一個檔案下載,這個檔案就是[金鑰],有了這個金鑰就能存取Google Drive API了
注意:這個金鑰要保存好,程式要能夠存取檔案就是要透過這個金鑰
不過這個Service Account相當於一個獨立帳號,它是無法直接存取我們正在使用帳號的Google Drive的
要讓它能夠存取,需要分享資料夾權限給這個Service Account
首先要先取得這個Service Account的服務帳戶ID
前面其實在建立服務帳戶時有填寫,不過如果沒記下可以點右方的 [管理服務帳戶] 查看
這時可以會拿到Service Account的電子郵件,把它記下來
接下來開啟Google Drive,對想要給程式能夠存取的資料夾點右鍵 [共用…]
然後輸入剛剛記下的電子郵件並確定,這樣子Service Account就能夠存取這個資料夾了
官方有提供不同程式語言的library來存取API
可以至網站上查看document:https://developers.google.com/drive/api/v3/downloads
這邊示範一個PHP的例子如何使用Service Account的金鑰存取API
安裝library
composer require google/apiclient:"^2.0"
程式碼
$client = new Google_Client; $client->setAuthConfig('/path/of/key.json'); $client->addScope(Google_Service_Drive::DRIVE);