พอดีผมทำ Google Drive API และเอาขึ้น Github เอาไว้ โดยสามารถดาวน์โหลดได้จาก Google Drive API บทความนี้จะเขียนอธิบายวิธีใช้นิดหน่อย จุดประสงค์ของการทำ API ชุดนี้ก็เพื่อจะทำโปรแกรมสำหรับอัพโหลดไฟล์จาก server ไปเก็บไว้ยัง Google Drive โดยอัตโนมัติ เพื่อทำการ backup ข้อมูล โดยใน API สามารถที่จะแสดงรายชื่อไฟล์และโฟลเดอร์, สร้างโฟลเดอร์ใหม่, ลบไฟล์และโฟลเดอร์ และอัพโหลดไฟล์เข้าไปยังโฟลเดอร์ที่กำหนดไว้ได้ หากใครต้องการเพิ่มความสามารถอื่นเข้าไป ก็สามารถอ่านวิธีเรียกใช้งาน API ได้จาก Reference ด้านล่างบทความนะครับ
ในการเรียกใช้งาน Service ของ Google API เราต้องทำการร้องขอ Access Token ไปยัง Server ของทาง Google เพื่ออนุญาตให้แอพที่เราสร้างสามารถเข้าถึง Service ที่เราระบุเอาไว้ได้ ซึ่งเมื่อเราได้ Access Token มาแล้วเราสามารถที่จะใช้ Access Token ตัวนี้ในการเรียกใช้ API ต่างๆ ได้ ซึ่งในบทความนี้เราจะทำการเรียกใช้ Google Drive API
มาลองทดลองทำจริงเลยดีกว่าครับ เริ่มแรกเลยให้ทำการดาวน์โหลดโค้ดทั้งหมดจาก Github ลงมาก่อน https://github.com/LookHin/google-drive-api จากนั้นทำการเปิดใช้งาน Google Drive API โดยคลิกเข้าไปที่ Enable Google Drive API จากนั้นเลือกสร้างโปรเจคใหม่ หรือเลือกโปรเจคเก่าที่เรามีอยู่แล้วก็ได้
คลิก Create credentials และเลือก OAuth client ID
ในช่อง Application type ให้เลือกเป็น Other และช่อง Name ให้ใส่เป็นชื่อที่เราต้องการ และคลิก Create
หลังจากคลิก Create แล้วระบบจะแสดง Client Id และ Client secret ขึ้นมาให้ ให้เรา copy รหัสทั้ง 2 ตัวนี้ไปใส่ในไฟล์ authorize.php และ example.php
1 2 | $strClientId = "YOUR_CLIENT_ID"; $strClientSecret = "YOUR_CLIENT_SECRET"; |
ทำการ Authorize โดยเรียก authorize.php จากบราวเซอร์ เช่น http://YOUR_SERVER/google-drive/authorize.php และทำการคลิก Allow เพื่อทำการอนุญาติให้แอพที่เราสร้างสามารถเข้าถึงข้อมูลใน Google Drive ได้
หลังจากคลิก Allow แล้วระบบจะแสดง Refresh Token ขึ้นมาให้ ให้ทำการ copy รหัสตัวนี้ไปใส่ในไฟล์ example.php
1 | $strRefreshToken = "YOUR_REFRESH_TOKEN"; |
เพียงเท่านี้โปรแกรมของเรา ที่เราเขียนไว้ในไฟล์ example.php ก็พร้อมที่จะทำงานได้แล้วครับ แต่ก่อนอื่นมารู้จักกับ File Id และ Folder Id ที่ใช้ภายใน Google Drive กันก่อน ในระบบของ Google Drive จะอ้างอิงถึงไฟล์และโฟลเดอร์ต่างๆ ผ่านทาง Id ฉะนั้นเวลาเราจะสร้างโฟลเดอร์ใหม่ หรือทำการอัพโหลดเข้าไปในโฟลเดอร์ต่างๆ เราต้องรู้ก่อนว่าโฟลเดอร์นั้นมี Id เป็นอะไร โดยวิธีที่ง่ายที่สุดก็คือเปิดเข้าไปที่ Google Drive และคลิกเลือกไปที่โฟลเดอร์ที่ต้องการ เราจะเห็น Id ของโฟลเดอร์นั้นๆ แสดงเป็น URL ดังรูป
ตัวอย่าง: จากตัวอย่างของโค้ด ผมทำตัวอย่างการแสดงไฟล์ สร้างโฟลเดอร์ ลบไฟล์และโฟลเดอร์ และอัพโหลดไฟล์ไว้ให้แล้ว ลองเล่นกันดูครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <?php include_once("google-drive-api.class.php"); $strClientId = "YOUR_CLIENT_ID"; $strClientSecret = "YOUR_CLIENT_SECRET"; $strRefreshToken = "YOUR_REFRESH_TOKEN"; // Init Drive Object $obj = new GoogleDriveApi($strClientId, $strClientSecret); $obj->setAccessTokenFromRefreshToken($strRefreshToken); // List File From Root Folder $arrFile = $obj->ListFileAndFolder("root"); print_r($arrFile); // # List File From Folder Id //$arrFile = $obj->ListFileAndFolder("_PARENT_FOLDER_ID_"); //print_r($arrFile); // # Create Folder In Root Folder //$obj->CreateFolder("root", "_NEW_FOLDER_NAME_"); // # Create Folder In Parent Folder //$obj->CreateFolder("_PARENT_FOLDER_ID_", "_NEW_FOLDER_NAME_"); // # Delete File & Folder //$obj->Delete("_FILE_OR_FOLDER_ID_"); // # Upload File To Root Folder // $arrResult = $obj->Upload("root", "no-face.png"); // print_r($arrResult); // # Upload File To Parent Folder // $arrResult = $obj->Upload("_PARENT_FOLDER_ID_", "no-face.png"); // print_r($arrResult); ?> |
อ้างอิง :
https://github.com/LookHin/google-drive-api
https://developers.google.com/identity/protocols/OAuth2WebServer
https://developers.google.com/drive/v3/reference/files
https://developers.google.com/drive/v3/web/resumable-upload