[Google API] Hướng dẫn cách đăng ký Youtube API

Đối với người dùng Internet hiện tại, việc sử dụng các dịch vụ của Google cung cấp đã trở nên quá quen thuộc. Ai trong chúng ta cũng từng ít nhất 1 lần sử dụng các dịch vụ của Google như: Gmail, Youtube, Map,v.v
Các dịch vụ này của google được cung cấp miễn phí cho người dùng. Bên cạnh đó, Google cũng cung cấp các hàm API của các dịch vụ này ra bên ngoài, cho phép các bên thứ 3 có thể sử dụng các dịch vụ của Google trong các ứng dụng của mình.
Trong bài viết hôm nay, chúng ta sẽ tìm hiểu cách đăng ký sử dụng dịch vụ Youtube API của Google, từ đó chúng ta có thể dùng nó trong các ứng dụng của bản thân.

ĐĂNG KÝ DỊCH VỤ

Đăng nhập vào Google Developer

  • Để có thể sử dụng các dịch vụ của Google thì điều cần thiết đầu tiên là 1 account Google, việc đăng ký khá đơn giản tại đây

  • Sau khi đã có tài khoản của Google, ta truy cập vào trang Google Developer

  • Sau khi đã đăng nhập thành công, chúng ta sẽ tới được màn hình quản lý API.

Tạo project trên Develop Google

  • Để có thể sử dụng các dịch vụ của Google, ta cần phải tạo một project để có thể sử dụng.

  • Chúng ta vào link này để tạo project. Đối với một account thì chúng ta có thể tạo tối đa 12 project.

  • Sau khi tạo Project xong, trong bảng thông tin của Project sẽ hiện ra các API mà chúng ta có thể sử dụng cũng như trạng thái của nó (Enabled/Disabled).

Kích hoạt Youtube API

  • Trở về trang quản lý API, ta gõ vô thanh search cụm từ youtube, sau đó chọn Youtube Data API

  • Sau khi chọn API, ta bấm Enable để kích hoạt API.

Khởi tạo API Key

  • Sau khi đã kích hoạt thành công API, chúng ta vào mục Credentials -> Create Credentials -> API Key
  • Sau khi khởi tạo thành công, chúng ta đã có thể sử dụng key vừa rồi trong các ứng dụng của mình.

Các thành phần của API

Các hàm hỗ trợ
  • list: Hàm (GET) lấy về list dữ liệu của một hay nhiều resources.
  • insert: Khởi tạo (POST) thông tin của resource.
  • update: Thay đổi (PUT) thông tin của resource.
  • delete: Xóa (DELETE) thông tin một resource.
Thông tin các resource
  • API của Youtube cho phép chúng ta truy xuất vào từng resource cụ thể để tránh tình trạng dư thừa dữ liệu không cần thiết; cũng như góp phần sử dụng network và CPU một cách hiệu quả nhất.
  • API hỗ trợ 2 loại request parameters để người dùng có thể lấy thông tin: partfields
Tham số PART

Tham số part xác định nhóm các resource được trả về. Bao gồm:

  • snippet: Chứa thông tin cơ bản của video, bao gồm
    title, description, category, thumbnails,..
  • contentDetails: Chứa thông tin về dữ liệu của video, bao gồm thời lượng video (duration), tỉ lệ màn hình (dimension), captions, rating,...
  • fileDetails: Thông tin về file video được upload lên Youtube, bao gồm độ phân giải (resolution), duration, codec của audio và video.
  • player: Thông tin về trình player để nhúng vào tag HTML.
  • processingDetails: Chứa thông tin về tình trạng xử lý của video đã được upload lên Youtube. Thông tin bao gồm tình trạng xử lý, thời lượng video còn lại cần xử lý. Thông tin này chỉ có thể get được đối với các video mà bản thân sở hữu.
  • recordingDetails: Thông tin về vị trí, kinh độ và vĩ độ nơi video được quay.
  • statistics: Thông tin về thống kê của video, bao gồm số lượt xem, số lượt yêu thích,..
  • status: Trạng thái của videos, tình trạng xử lý, bản quyền.
  • suggestions: Thông tin gợi ý để giúp video hoàn thiện hơn, bao gồm các tags, metadata. Thông tin này chỉ có thể được truy cập tới video chính chủ.
  • topicDetails: Thông tin về các chủ đề có liên quan tới nội dung videos.
Tham số FIELDS

Tham số fields giúp chúng ta xác định rõ các giá trị sẽ được trả về trong API, loại bỏ các giá trị nested trong giá trị trả về (Giá trị nằm trong các object phức tạp). Tuy nhiên tham số fields không có chức năng lọc các giá trị trả về trong nested properties. Cách sử dụng:

  • Sử dụng fields=a,b: lựa chọn nhiều trường dữ liệu.
  • Sử dụng fields=*: chọn toàn bộ các trường.
  • Sử dụng fields=a(b,c): Gom nhóm các giá trị sẽ trả về trong API.
  • Sử dụng fields=a/b: Xác định trường cụ thể trong nested properties (trường b thuộc object a).

Ví dụ nếu ta muốn lấy về id, title, description của một video, ta có thể sử dụng bất kì dòng nào dưới đây:

  • fields=items(id,snippet/title,snippet/description)
  • fields=items(id,snippet(title,description))
  • fields=items/id,playlistItems/snippet/title,playlistItems/snippet/description

Thử nghiệm dùng API Key

  • Để sử dụng Youtube API, ta gọi đến API của Google theo đường dẫn:
https://www.googleapis.com/youtube/v3/videos?id=VIDEO_ID&key=YOUR_API_KEY
  • VIDEO_ID: Id của video mà chúng ta muốn lấy thông tin.
  • YOUR_API_KEY: Key của Google API mà chúng ta vừa lấy được phía trên.

Sử dụng trường Part lấy thông tin

  • Request:

  • Kết quả trả về:

{
    "kind": "youtube#videoListResponse",
    "etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/OMj9Eo_jn5E3lBOVe_HOpKNkmOA\"",
    "pageInfo": {
        "totalResults": 1,
        "resultsPerPage": 1
    },
    "items": [
        {
            "kind": "youtube#video",
            "etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/WxIod6IwZX9RYmY92FW9ftnOK9c\"",
            "id": "vxl4gsvgEQY",
            "snippet": {
                "publishedAt": "2017-03-01T03:00:07.000Z",
                "channelId": "UCxOjoraUPd0Dq9PAyIhC6tQ",
                "title": "[MV] Perfume 「TOKYO GIRL」",
                "description": "Perfume New Single 「TOKYO GIRL」\n2017.2.15 on sale\n\n「TOKYO GIRL」:日本テレビ 水曜ドラマ 「東京タラレバ娘」主題歌\nc/w 「宝石の雨」:Ora2 × Perfume くちもとBeauty Project TV CMソング\n\niTunes https://itunes.apple.com/jp/album/tokyo-girl/id1200616181?i=1200616349&app=itunes&ls=1\nレコチョク http://po.st/tokyogirlrc\n\n\n【Perfume Official Site】\nhttp://www.perfume-web.jp/",
                "thumbnails": {
                    "default": {
                        "url": "https://i.ytimg.com/vi/vxl4gsvgEQY/default.jpg",
                        "width": 120,
                        "height": 90
                    },
                    "medium": {
                        "url": "https://i.ytimg.com/vi/vxl4gsvgEQY/mqdefault.jpg",
                        "width": 320,
                        "height": 180
                    },
                    "high": {
                        "url": "https://i.ytimg.com/vi/vxl4gsvgEQY/hqdefault.jpg",
                        "width": 480,
                        "height": 360
                    },
                    "standard": {
                        "url": "https://i.ytimg.com/vi/vxl4gsvgEQY/sddefault.jpg",
                        "width": 640,
                        "height": 480
                    }
                },
                "channelTitle": "Perfume",
                "tags": [
                    "Perfume",
                    "a-chan",
                    "KASHIYUKA",
                    "NOCCHi",
                    "あ~ちゃん",
                    "かしゆか",
                    "のっち",
                    "Perfume Official Channel",
                    "パフュームオフィシャル",
                    "Perfumeオフィシャル",
                    "あーちゃん",
                    "TOKYO GIRL",
                    "東京タラレバ娘",
                    "吉高由里子"
                ],
                "categoryId": "10",
                "liveBroadcastContent": "none",
                "localized": {
                    "title": "[MV] Perfume 「TOKYO GIRL」",
                    "description": "Perfume New Single 「TOKYO GIRL」\n2017.2.15 on sale\n\n「TOKYO GIRL」:日本テレビ 水曜ドラマ 「東京タラレバ娘」主題歌\nc/w 「宝石の雨」:Ora2 × Perfume くちもとBeauty Project TV CMソング\n\niTunes https://itunes.apple.com/jp/album/tokyo-girl/id1200616181?i=1200616349&app=itunes&ls=1\nレコチョク http://po.st/tokyogirlrc\n\n\n【Perfume Official Site】\nhttp://www.perfume-web.jp/"
                }
            },
            "contentDetails": {
                "duration": "PT4M33S",
                "dimension": "2d",
                "definition": "hd",
                "caption": "false",
                "licensedContent": true,
                "projection": "rectangular"
            },
            "status": {
                "uploadStatus": "processed",
                "privacyStatus": "public",
                "license": "youtube",
                "embeddable": true,
                "publicStatsViewable": false
            },
            "statistics": {
                "viewCount": "14343148",
                "likeCount": "56732",
                "dislikeCount": "2254",
                "favoriteCount": "0",
                "commentCount": "2578"
            }
        }
    ]
}
  • Ở đây, ta có thể thấy được hầu hết các thông tin cơ bản của video, mỗi thông tin như vậy được đặt trong từng group cụ thể và API chỉ trả về thông tin trong các part mà chúng ta yêu cầu.

Sử dụng trường Fields để lấy thông tin

  • Chúng ta tiến hành gom nhóm và chỉ chọn ra một vài trường dữ liệu mà chúng ta muốn lấy. Ở đây, chúng ta sẽ lấy về Id, title, description & statistics của video.
  • Request:
  • Kết quả:
{
    "items": [
        {
            "id": "vxl4gsvgEQY",
            "snippet": {
                "title": "[MV] Perfume 「TOKYO GIRL」",
                "description": "Perfume New Single 「TOKYO GIRL」\n2017.2.15 on sale\n\n「TOKYO GIRL」:日本テレビ 水曜ドラマ 「東京タラレバ娘」主題歌\nc/w 「宝石の雨」:Ora2 × Perfume くちもとBeauty Project TV CMソング\n\niTunes https://itunes.apple.com/jp/album/tokyo-girl/id1200616181?i=1200616349&app=itunes&ls=1\nレコチョク http://po.st/tokyogirlrc\n\n\n【Perfume Official Site】\nhttp://www.perfume-web.jp/",
                "thumbnails": {
                    "default": {
                        "url": "https://i.ytimg.com/vi/vxl4gsvgEQY/default.jpg",
                        "width": 120,
                        "height": 90
                    },
                    "medium": {
                        "url": "https://i.ytimg.com/vi/vxl4gsvgEQY/mqdefault.jpg",
                        "width": 320,
                        "height": 180
                    },
                    "high": {
                        "url": "https://i.ytimg.com/vi/vxl4gsvgEQY/hqdefault.jpg",
                        "width": 480,
                        "height": 360
                    },
                    "standard": {
                        "url": "https://i.ytimg.com/vi/vxl4gsvgEQY/sddefault.jpg",
                        "width": 640,
                        "height": 480
                    }
                }
            },
            "statistics": {
                "viewCount": "14343196",
                "likeCount": "56732",
                "dislikeCount": "2254",
                "favoriteCount": "0",
                "commentCount": "2578"
            }
        }
    ]
}
  • Chúng ta có thể thấy thông tin trả về đã được gom lại trong object items.
  • Đối với title và description do cùng nằm trong part snippet nên khi trả về sẽ ở trong object snippet.
  • Thông tin API trả về chỉ đúng những trường mà chúng ta yêu cầu trong phần fields

Kết luận.

  • Với việc đăng ký dễ dàng và nhanh chóng, việc sử dụng các API của Google cung cấp sẽ không gây quá nhiều khó khăn cho các lập trình viên.
  • Google cũng cung cấp công cụ trực quan để giúp chúng ta quản lý Quota của API, giúp việc kiểm soát dễ dàng hơn.
  • Với khả năng tùy chỉnh dữ liệu trả về
  • Việc sử dụng API giúp chúng ta lấy được nhiều hơn thông tin của video, từ đó thuận lợi cho việc áp dụng vào các ứng dụng.
  • Trong bài viết tiếp theo, mình sẽ hướng dẫn cách dùng Google API để fetch dữ liệu lên View cụ thể ( Sử dụng React)

Tham khảo