สร้างแอปด้วย AngularJS

คู่มือนี้จะช่วยคุณในการสร้างแอป Chrome ด้วยเฟรมเวิร์ก MVC AngularJS เพื่อให้เห็นภาพการทำงานของ Angular เราจะอ้างอิงแอปจริงที่สร้างขึ้นโดยใช้เฟรมเวิร์ก ซึ่งก็คือ Google Drive Uploader มีซอร์สโค้ดใน GitHub

เกี่ยวกับแอป

เครื่องมืออัปโหลดของ Google ไดรฟ์

เครื่องมืออัปโหลดของ Google ไดรฟ์ช่วยให้ผู้ใช้สามารถดูและโต้ตอบกับไฟล์ที่เก็บในบัญชี Google ไดรฟ์ของตนได้อย่างรวดเร็ว และยังสามารถอัปโหลดไฟล์ใหม่ๆ โดยใช้ API การลากและวาง ได้อีกด้วย ตัวอย่างที่ยอดเยี่ยมของการสร้างแอปซึ่งสื่อสารกับ API ของ Google ซึ่งในกรณีนี้คือ Google Drive API

ผู้อัปโหลดใช้ OAuth2 เพื่อเข้าถึงข้อมูลของผู้ใช้ chrome.identity API จะจัดการกับการดึงข้อมูลโทเค็น OAuth สำหรับผู้ใช้ที่ลงชื่อเข้าสู่ระบบ เราจึงทำงานหนักแทนเรา เมื่อเรามีโทเค็นเพื่อการเข้าถึงที่ใช้ได้นานแล้ว แอปจะใช้ API ของ Google ไดรฟ์เพื่อเข้าถึงข้อมูลของผู้ใช้

ฟีเจอร์สำคัญที่แอปนี้ใช้:

  • การตรวจหาอัตโนมัติของ AngularJS สำหรับ CSP
  • แสดงรายการไฟล์ที่ดึงมาจาก Google Drive API
  • HTML5 Filesystem API สำหรับจัดเก็บไอคอนไฟล์แบบออฟไลน์
  • HTML5 ลากและวางสำหรับการนำเข้า/อัปโหลดไฟล์ใหม่จากเดสก์ท็อป
  • XHR2 เพื่อโหลดรูปภาพแบบข้ามโดเมน
  • chrome.identity API สำหรับการให้สิทธิ์ OAuth
  • เฟรมที่ไม่มี Chrome เพื่อกำหนดรูปลักษณ์ของแถบนำทางของแอปเอง

กำลังสร้างไฟล์ Manifest

แอป Chrome ทั้งหมดต้องการไฟล์ manifest.json ซึ่งมีข้อมูลที่ Chrome ต้องใช้ในการเปิดแอป โดยไฟล์ Manifest มีข้อมูลเมตาที่เกี่ยวข้องและแสดงรายการสิทธิ์พิเศษที่แอปต้องใช้

ไฟล์ Manifest ของผู้อัปโหลดเวอร์ชันที่ตัดทอนลงจะมีลักษณะดังต่อไปนี้

{
  "name": "Google Drive Uploader",
  "version": "0.0.1",
  "manifest_version": 2,
  "oauth2": {
    "client_id": "665859454684.apps.googleusercontent.com",
    "scopes": [
      "https://www.googleapis.com/auth/drive"
    ]
  },
 ...
  "permissions": [
    "https://docs.google.com/feeds/",
    "https://docs.googleusercontent.com/",
    "https://spreadsheets.google.com/feeds/",
    "https://ssl.gstatic.com/",
    "https://www.googleapis.com/"
  ]
}

ส่วนที่สำคัญที่สุดของไฟล์ Manifest นี้คือส่วน "oauth2" และ "permissions"

ส่วน "oauth2" จะกำหนดพารามิเตอร์ที่จำเป็นโดย OAuth2 เพื่อการค้นหาที่ดีที่สุด หากต้องการสร้าง "client_id" ให้ทำตามวิธีการในรับรหัสลูกค้าของคุณ "ขอบเขต" จะแสดงรายการขอบเขตการให้สิทธิ์ที่จะใช้ได้สำหรับโทเค็น OAuth (เช่น API ที่แอปต้องการเข้าถึง)

ส่วน "สิทธิ์" ประกอบด้วย URL ที่แอปจะเข้าถึงผ่าน XHR2 คำนำหน้า URL เป็นสิ่งที่จำเป็นเพื่อให้ Chrome ทราบว่าคำขอข้ามโดเมนใดอนุญาต

การสร้างหน้ากิจกรรม

แอป Chrome ทั้งหมดต้องใช้สคริปต์/หน้าเว็บพื้นหลังเพื่อเปิดแอปและตอบสนองต่อเหตุการณ์ของระบบ

ในสคริปต์ background.js ผู้อัปโหลดไดรฟ์จะเปิดหน้าต่างขนาด 500x600px ไปยังหน้าหลัก นอกจากนี้ยังระบุความสูงและความกว้างขั้นต่ำสำหรับหน้าต่างเพื่อไม่ให้เนื้อหาถูกบดบังเกินไป ดังนี้

chrome.app.runtime.onLaunched.addListener(function(launchData) {
  chrome.app.window.create('../main.html', {
    id: "GDriveExample",
    bounds: {
      width: 500,
      height: 600
    },
    minWidth: 500,
    minHeight: 600,
    frame: 'none'
  });
});

ระบบจะสร้างหน้าต่างนั้นเป็นหน้าต่างแบบไม่ใช้ Chrome (Frame: "none") โดยค่าเริ่มต้น หน้าต่างจะแสดงผลด้วยแถบปิด/ขยาย/ย่อเล็กสุดที่เป็นค่าเริ่มต้นของระบบปฏิบัติการ ดังนี้

เครื่องมืออัปโหลดของ Google ไดรฟ์ที่ไม่มีกรอบ

ผู้อัปโหลดใช้ frame: 'none' เพื่อแสดงผลหน้าต่างเป็น "แถบสเลทเปล่า" และสร้างปุ่มปิดที่กำหนดเองใน main.html ดังนี้

เครื่องมืออัปโหลดของ Google ไดรฟ์พร้อมกรอบที่กำหนดเอง

พื้นที่การนำทางทั้งหมดรวมอยู่ใน