ตัวอย่างโค้ดด้านล่างใช้ไลบรารีของไคลเอ็นต์ Google APIs สำหรับ JavaScript คุณดาวน์โหลดตัวอย่างนี้ได้จากโฟลเดอร์ javascript
ของที่เก็บตัวอย่างโค้ดของ YouTube API ใน GitHub
โค้ดจะขอสิทธิ์จากผู้ใช้เพื่อเข้าถึงขอบเขต https://www.googleapis.com/auth/yt-analytics.readonly
return gapi.auth2.getAuthInstance() .signIn({scope: "https://www.googleapis.com/auth/yt-analytics.readonly"}) ...
แอปพลิเคชันของคุณอาจต้องขอสิทธิ์เข้าถึงขอบเขตอื่นๆ ด้วย ตัวอย่างเช่น แอปพลิเคชันที่เรียกใช้ YouTube Analytics API และ YouTube Data API อาจต้องให้ผู้ใช้ให้สิทธิ์เข้าถึงบัญชี YouTube ของตนด้วย ภาพรวมการให้สิทธิ์จะระบุขอบเขตที่มักใช้ในแอปพลิเคชันที่เรียกใช้ YouTube Analytics API
เรียกข้อมูลสถิติช่องรายวัน
ตัวอย่างนี้เรียกใช้ YouTube Analytics API เพื่อดึงข้อมูลยอดดูรายวันและเมตริกอื่นๆ สำหรับช่องของผู้ใช้ที่ให้สิทธิ์ในปีปฏิทิน 2017 ตัวอย่างใช้ไลบรารีของไคลเอ็นต์ JavaScript ของ Google APIs
ตั้งค่าข้อมูลเข้าสู่ระบบการให้สิทธิ์
ก่อนเรียกใช้ตัวอย่างนี้ในเครื่องเป็นครั้งแรก คุณต้องตั้งค่าข้อมูลเข้าสู่ระบบการให้สิทธิ์สำหรับโปรเจ็กต์โดยทำดังนี้
- สร้างหรือเลือกโปรเจ็กต์ในคอนโซล Google API
- เปิดใช้ YouTube Analytics API สำหรับโปรเจ็กต์
- ที่ด้านบนของหน้าข้อมูลเข้าสู่ระบบ ให้เลือกแท็บหน้าจอขอความยินยอม OAuth เลือกอีเมล ป้อนชื่อผลิตภัณฑ์หากยังไม่ได้ตั้งค่า แล้วคลิกปุ่มบันทึก
- ในหน้าข้อมูลเข้าสู่ระบบ ให้คลิกปุ่มสร้างข้อมูลเข้าสู่ระบบ แล้วเลือกรหัสไคลเอ็นต์ Oauth
- เลือกประเภทแอปพลิเคชันเป็นเว็บแอปพลิเคชัน
- ในช่องต้นทาง JavaScript ที่ได้รับอนุญาต ให้ป้อน URL ที่คุณจะใช้แสดงตัวอย่างโค้ด เช่น คุณอาจใช้
http://localhost:8000
หรือhttp://yourserver.example.com
คุณเว้นช่อง URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตว่างไว้ได้ - คลิกปุ่มสร้างเพื่อสร้างข้อมูลเข้าสู่ระบบให้เสร็จสมบูรณ์
- ก่อนปิดกล่องโต้ตอบ ให้คัดลอกรหัสไคลเอ็นต์ ซึ่งคุณจะต้องใส่ลงในตัวอย่างโค้ด
ทำสำเนาตัวอย่างในเครื่อง
จากนั้นบันทึกตัวอย่างลงในไฟล์ในเครื่อง ในตัวอย่าง ให้ค้นหาบรรทัดต่อไปนี้ แล้วแทนที่ YOUR_CLIENT_ID ด้วยรหัสไคลเอ็นต์ที่คุณได้รับเมื่อตั้งค่าข้อมูลเข้าสู่ระบบการให้สิทธิ์
gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'});
เรียกใช้โค้ด
ตอนนี้คุณพร้อมที่จะทดสอบตัวอย่างแล้ว โดยทำดังนี้
- เปิดไฟล์ในเครื่องจากเว็บเบราว์เซอร์ แล้วเปิดคอนโซลการแก้ไขข้อบกพร่องในเบราว์เซอร์ คุณควรเห็นหน้าเว็บที่แสดงปุ่ม 2 ปุ่ม
- คลิกปุ่มให้สิทธิ์และโหลดเพื่อเปิดขั้นตอนการให้สิทธิ์ผู้ใช้ หากให้สิทธิ์แอปในการดึงข้อมูลช่อง คุณควรเห็นบรรทัดต่อไปนี้พิมพ์ลงในคอนโซลในเบราว์เซอร์
Sign-in successful GAPI client loaded for API
- หากเห็นข้อความแสดงข้อผิดพลาดแทนบรรทัดด้านบน ให้ยืนยันว่าคุณกำลังโหลดสคริปต์จาก URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตซึ่งคุณตั้งค่าไว้สำหรับโปรเจ็กต์ และคุณได้ใส่รหัสไคลเอ็นต์ลงในโค้ดตามที่อธิบายไว้ข้างต้น
- คลิกปุ่มเรียกใช้เพื่อเรียก API คุณควรเห็นออบเจ็กต์
response
พิมพ์ไปยังคอนโซลในเบราว์เซอร์ ในออบเจ็กต์นั้น พร็อพเพอร์ตี้result
จะแมปกับออบเจ็กต์ที่มีข้อมูล API
โค้ดตัวอย่าง
<script src="https://apis.google.com/js/api.js"></script> <script> function authenticate() { return gapi.auth2.getAuthInstance() .signIn({scope: "https://www.googleapis.com/auth/yt-analytics.readonly"}) .then(function() { console.log("Sign-in successful"); }, function(err) { console.error("Error signing in", err); }); } function loadClient() { return gapi.client.load("https://youtubeanalytics.googleapis.com/$discovery/rest?version=v2") .then(function() { console.log("GAPI client loaded for API"); }, function(err) { console.error("Error loading GAPI client for API", err); }); } // Make sure the client is loaded and sign-in is complete before calling this method. function execute() { return gapi.client.youtubeAnalytics.reports.query({ "ids": "channel==MINE", "startDate": "2017-01-01", "endDate": "2017-12-31", "metrics": "views,estimatedMinutesWatched,averageViewDuration,averageViewPercentage,subscribersGained", "dimensions": "day", "sort": "day" }) .then(function(response) { // Handle the results here (response.result has the parsed body). console.log("Response", response); }, function(err) { console.error("Execute error", err); }); } gapi.load("client:auth2", function() { gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'}); }); </script> <button onclick="authenticate().then(loadClient)">authorize and load</button> <button onclick="execute()">execute</button>