Nếu bạn đang xây dựng một phần mềm upload video YouTube tự động, công cụ đăng video hàng loạt, ứng dụng desktop quản lý kênh hoặc đơn giản là muốn thử nghiệm YouTube Data API v3, bước đầu tiên không nằm ở code mà là cấu hình đúng Google Cloud, OAuth 2.0 và quyền truy cập YouTube. Bài viết này hướng dẫn toàn bộ quy trình theo giao diện Google Cloud hiện tại, từ lúc tạo Project cho tới khi tải được file OAuth Client JSON dạng Desktop app.
1. Hiểu đúng: chúng ta cần tạo những gì?
Khi một ứng dụng desktop muốn upload video lên kênh YouTube của người dùng, ứng dụng đó phải được Google nhận diện và người dùng phải chủ động cấp quyền. Với YouTube Data API v3, cơ chế này sử dụng OAuth 2.0.
Quy trình tổng quát sẽ là:
Tạo Google Cloud Project
↓
Bật YouTube Data API v3
↓
Cấu hình Google Auth Platform
↓
Chọn Audience
↓
Thêm Test Users
↓
Khai báo OAuth Scopes
↓
Tạo OAuth Client ID
↓
Application type: Desktop app
↓
Download file JSON
↓
Đưa JSON vào phần mềm
↓
Đăng nhập Google và cấp quyền YouTube
Lưu ý: Nếu ứng dụng chỉ cần đăng nhập người dùng và upload/quản lý video của chính họ, bạn cần OAuth 2.0. Một API Key đơn thuần không đủ để upload video vào tài khoản YouTube riêng tư của người dùng. Tài liệu YouTube cũng phân biệt rõ API Key cho dữ liệu công khai và OAuth 2.0 cho các thao tác cần quyền người dùng.
Bước 1: Tạo Google Cloud Project
Truy cập Google Cloud Console và đăng nhập bằng tài khoản Google bạn muốn dùng để quản lý dự án.
Trên thanh trên cùng của Google Cloud Console, bấm vào khu vực chọn Project. Nếu bạn chưa có Project phù hợp, chọn New Project.
Điền thông tin Project
Bạn có thể đặt tên như sau:
Project name: CV YouTube Publisher
Nếu tài khoản là Gmail cá nhân, phần Organization thường có thể để No organization. Nếu đang dùng Google Workspace của doanh nghiệp, giao diện có thể hiển thị Organization hoặc Location tương ứng với tổ chức.
Sau đó bấm Create.
Đừng bỏ qua bước kiểm tra Project đang được chọn. Sau khi tạo xong, hãy nhìn tên Project trên thanh trên cùng và chắc chắn bạn đang thao tác trong đúng Project. Đây là lỗi khá phổ biến: người dùng tạo Project A nhưng lại bật API hoặc tạo OAuth Client trong Project B.
Bước 2: Bật YouTube Data API v3
Tạo Project mới chưa có nghĩa là Project đã được phép gọi YouTube API. Bạn cần bật dịch vụ YouTube Data API v3.
Trong Google Cloud Console, vào:
APIs & Services → Library
Trong ô tìm kiếm, nhập:
YouTube Data API v3
Chọn đúng dịch vụ có tên YouTube Data API v3 của Google, sau đó bấm:
ENABLE
Nếu nút hiện là Manage thay vì Enable, điều đó có nghĩa API đã được bật cho Project hiện tại.
Phân biệt: YouTube Data API v3 khác với YouTube Analytics API và YouTube Reporting API. Với công cụ upload video, metadata, playlist, thumbnail hoặc quản lý video, API cốt lõi thường là YouTube Data API v3.
Bước 3: Khởi tạo Google Auth Platform
Trước đây nhiều hướng dẫn gọi phần này là OAuth consent screen. Trên giao diện Google Cloud hiện tại, các thiết lập OAuth được tổ chức trong khu vực Google Auth Platform, bao gồm các mục như Branding, Audience, Data Access và Clients.
Trong menu Google Cloud, vào:
Google Auth Platform
Nếu Project chưa từng cấu hình OAuth, bạn có thể thấy thông báo tương tự Google Auth Platform not configured yet. Bấm Get Started.
App Information
Ở phần thông tin ứng dụng, điền:
| Trường | Gợi ý |
|---|---|
| App name | CV YouTube Publisher |
| User support email | Email Google của bạn hoặc email hỗ trợ người dùng |
Tên App có thể xuất hiện trên màn hình người dùng cấp quyền, vì vậy nên dùng tên dễ nhận diện, không đặt tên mơ hồ hoặc gây hiểu nhầm.
Bấm Next để tiếp tục.
Audience
Nếu đây là ứng dụng dùng với Gmail cá nhân hoặc muốn cho các tài khoản Google bên ngoài một Google Workspace Organization sử dụng, hãy chọn:
External
Internal chủ yếu phù hợp khi ứng dụng chỉ dành cho người dùng bên trong cùng một Google Workspace Organization.
Bấm Next.
Contact Information
Điền email để Google có thể gửi thông báo liên quan tới Project, OAuth, thay đổi chính sách hoặc yêu cầu xác minh.
Bấm Next.
Finish
Đọc Google API Services User Data Policy, đánh dấu đồng ý nếu phù hợp, sau đó bấm Continue và Create.
Bước 4: Thêm tài khoản vào Test Users
Trong giai đoạn phát triển, bạn chưa cần đưa ứng dụng ra Production ngay. Có thể để ứng dụng ở trạng thái Testing và chỉ cho một số tài khoản Google cụ thể sử dụng.
Vào:
Google Auth Platform → Audience
Kiểm tra Publishing status. Nếu đang là Testing, kéo xuống phần Test users, chọn Add users rồi thêm địa chỉ Gmail sẽ dùng để đăng nhập ứng dụng.
Ví dụ:
your-account@gmail.com
Nếu bạn quản lý nhiều kênh bằng nhiều tài khoản Google, có thể thêm nhiều tài khoản test. Theo tài liệu Google hiện tại, Project ở chế độ Testing có thể có tối đa 100 test users.
Điểm rất quan trọng: với ứng dụng ở trạng thái Testing và yêu cầu các OAuth Scope vượt ra ngoài nhóm thông tin đăng nhập cơ bản, quyền cấp bởi test user có thể hết hạn sau 7 ngày. Nếu ứng dụng nhận refresh token cho quyền truy cập offline, refresh token đó cũng có thể hết hạn sau 7 ngày. Vì vậy việc phải đăng nhập lại sau vài ngày trong giai đoạn test không nhất thiết là lỗi phần mềm.
Nếu kênh YouTube là Brand Account thì sao?
Google cho phép người quản lý Brand Account cấp quyền thông qua tài khoản Google quản lý Brand Account đó. Điều quan trọng là tài khoản Google thực tế dùng để xác thực OAuth phải nằm trong danh sách Test users khi Project đang ở Testing.
Bước 5: Thêm OAuth Scopes cho YouTube
OAuth Scope quyết định ứng dụng được phép làm gì. Nguyên tắc tốt nhất là chỉ xin đúng những quyền thực sự cần dùng, tránh yêu cầu những quyền rộng hơn không cần thiết.
Vào:
Google Auth Platform → Data Access → Add or remove scopes
Scope cần chọn phụ thuộc đúng chức năng phần mềm. Nếu ứng dụng chỉ upload video và đọc thông tin kênh thì youtube.upload + youtube.readonly có thể đủ. Tuy nhiên, một publisher hiện đại có thêm playlist, cập nhật metadata từ xa hoặc subtitle sẽ cần quyền ghi rộng hơn.
Với CV YouTube Publisher v0.3.3, nên thêm đủ 3 scope sau:
https://www.googleapis.com/auth/youtube.upload https://www.googleapis.com/auth/youtube.readonly https://www.googleapis.com/auth/youtube.force-ssl
| Scope | Mục đích trong CV YouTube Publisher |
|---|---|
youtube.upload | Upload video lên YouTube bằng videos.insert. |
youtube.readonly | Đọc thông tin kênh, video và các trạng thái cần thiết để xác định đúng tài khoản/kênh đang kết nối. |
youtube.force-ssl | Cần cho các thao tác ghi như thêm/gỡ video khỏi playlist, cập nhật metadata video đã upload và các chức năng ghi YouTube nâng cao. Tài liệu chính thức của Google liệt kê scope này cho playlistItems.insert và videos.update. |
Trong cửa sổ chọn scope, tìm lần lượt youtube.upload, youtube.readonly và youtube.force-ssl, đánh dấu các quyền rồi bấm Update hoặc Save tùy giao diện Google Auth Platform tại thời điểm sử dụng.
Vì sao bây giờ phải thêm youtube.force-ssl? Các phiên bản đầu của một uploader có thể chỉ upload và đọc dữ liệu nên chưa cần quyền này. Từ khi phần mềm hỗ trợ multi-playlist và Remote Metadata Update, quyền ghi là cần thiết. Nếu đã dùng OAuth từ phiên bản cũ, bạn không cần tạo Client JSON mới, nhưng cần thêm scope trong Google Auth Platform rồi kết nối/cấp quyền lại một lần để token mới có đủ quyền.
youtube.force-ssl là quyền rộng. Chỉ yêu cầu khi phần mềm thực sự dùng playlist, cập nhật metadata, caption hoặc các thao tác ghi tương ứng. Không nên chọn toàn bộ scope YouTube, quyền YouTube Partner hoặc các scope không liên quan chỉ để “cho chắc”. Nguyên tắc đúng vẫn là xin quyền tối thiểu phù hợp với chức năng thực tế.
Tham khảo chính thức: PlaylistItems: insert và Videos: update.
Thiết lập riêng cho CV YouTube Publisher
Nếu mục tiêu của bạn là sử dụng tool CV YouTube Publisher của mình, sau khi hoàn tất Google Cloud có thể đối chiếu nhanh theo cấu hình dưới đây:
YouTube Data API v3: Enabled OAuth Client type: Desktop app Audience: External (nếu dùng Gmail cá nhân) Publishing status khi test: Testing Scopes: youtube.upload youtube.readonly youtube.force-ssl
Sau đó trong phần mềm:
Chọn OAuth JSON
↓
Kết nối Google / YouTube
↓
Đăng nhập đúng tài khoản quản lý kênh
↓
Chấp thuận các quyền
↓
Kiểm tra tên kênh + Channel ID
↓
Test 1 video Private trước khi chạy batch lớn
Đã từng dùng CV YouTube Publisher phiên bản cũ? Nếu token cũ chỉ được cấp youtube.upload và youtube.readonly, hãy thêm youtube.force-ssl trong Data Access rồi dùng chức năng kết nối lại Google của phần mềm. Không cần tạo lại Google Cloud Project và cũng không cần tạo lại OAuth Client JSON chỉ vì bổ sung scope.
Bước 6: Tạo OAuth Client ID dạng Desktop app
Sau khi cấu hình Auth Platform, vào:
Google Auth Platform → Clients
Bấm:
Create Client
Ở Application type, chọn:
Desktop app
Đặt tên dễ nhận biết, ví dụ:
CV YouTube Publisher Windows
Sau đó bấm Create.
Vì sao phải chọn Desktop app? Nếu phần mềm chạy trực tiếp trên Windows của người dùng, mở trình duyệt để người dùng đăng nhập Google rồi trả kết quả xác thực về ứng dụng cục bộ, đây chính là mô hình installed/desktop application. Không nên tạo Web application chỉ vì bạn nhìn thấy lựa chọn đó đầu tiên.
Sau khi tạo, Google sẽ sinh một OAuth Client ID có dạng gần giống:
123456789012-xxxxxxxxxxxxxxxx.apps.googleusercontent.com
Bạn không cần chép Client ID bằng tay nếu phần mềm được thiết kế để đọc file JSON credentials.
Bước 7: Download file OAuth Client JSON
Trong danh sách Clients, chọn OAuth Client vừa tạo và tải file JSON về máy. Google thường đặt tên file tương tự:
client_secret_1234567890-abcdefgh.apps.googleusercontent.com.json
Tài liệu quickstart của Google cũng sử dụng file JSON tải từ OAuth 2.0 Client ID dạng Desktop app cho ứng dụng cài đặt trên máy tính.
Cấu trúc file JSON thường trông như thế nào?
{
"installed": {
"client_id": "....apps.googleusercontent.com",
"project_id": "cv-youtube-publisher",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"client_secret": "...",
"redirect_uris": [
"http://localhost"
]
}
}
Không sửa thủ công file JSON. Đặc biệt, không đổi trường installed thành web, không chỉnh Client ID, Client Secret hoặc redirect URI nếu ứng dụng không yêu cầu. File này là thông tin xác thực của OAuth Client đã được Google tạo.
Có cần tạo API Key không?
Một số quickstart của Google tạo cả API Key và OAuth Client ID vì ví dụ của họ vừa truy vấn dữ liệu công khai vừa gọi API cần quyền người dùng. Tuy nhiên, nếu phần mềm của bạn chỉ thực hiện các thao tác đã được OAuth 2.0 ủy quyền như xác định kênh đăng nhập và upload video, ứng dụng có thể sử dụng OAuth access token cho các yêu cầu đó mà không cần thêm một API Key riêng chỉ để upload.
Vì vậy, với một uploader desktop được thiết kế đúng OAuth, đừng nhầm rằng “YouTube API bắt buộc phải có cả API Key mới upload được”.
Bước 8: Đưa JSON vào phần mềm và test đăng nhập
Sau khi tải được file OAuth JSON, bước tiếp theo phụ thuộc phần mềm bạn đang dùng. Với một ứng dụng upload YouTube desktop, luồng phổ biến là:
Chọn OAuth JSON
↓
Bấm Kết nối YouTube
↓
Trình duyệt mặc định mở
↓
Đăng nhập tài khoản Google
↓
Google hiển thị màn hình cấp quyền
↓
Người dùng chấp thuận
↓
Ứng dụng nhận token
↓
Ứng dụng đọc thông tin kênh
Nên chọn tài khoản Google nào?
Chọn tài khoản đang sở hữu hoặc quản lý kênh YouTube cần upload. Nếu trình duyệt đang đăng nhập nhiều tài khoản, hãy kiểm tra kỹ email trước khi bấm tiếp tục.
Nếu Project đang ở Testing, tài khoản này phải được thêm vào danh sách Test users.
Màn hình “Google hasn’t verified this app” có phải lỗi không?
Không nhất thiết. Khi bạn đang phát triển một OAuth App chưa qua quy trình verification và chỉ dùng cho test users, Google có thể hiển thị cảnh báo ứng dụng chưa được xác minh. Tài liệu Google cũng đề cập việc test users có thể thấy cảnh báo trước khi cấp quyền cho ứng dụng đang Testing.
Khi test lần đầu, nên sử dụng một video ngắn, dung lượng nhỏ và đặt quyền riêng tư là Private. Mục tiêu của lần test đầu tiên chỉ là xác minh toàn bộ chuỗi: OAuth hoạt động → đúng kênh → API nhận upload → trả về Video ID.
9. Các lỗi thường gặp khi cấu hình YouTube OAuth
Lỗi 1: Error 403 – access_denied
Kiểm tra lần lượt:
- Project có đang ở trạng thái Testing không?
- Email đăng nhập có nằm trong Audience → Test users không?
- Bạn có đang đăng nhập nhầm một tài khoản Google khác trong trình duyệt không?
- Tài khoản có bị giới hạn bởi Google Workspace Administrator không?
Ví dụ bạn thêm A@gmail.com vào Test users nhưng khi trình duyệt mở lại chọn B@gmail.com, quyền OAuth có thể bị từ chối.
Lỗi 2: API chưa được bật
Nếu ứng dụng xác thực OAuth thành công nhưng gọi YouTube API thất bại, hãy kiểm tra Project hiện tại đã bật YouTube Data API v3 hay chưa.
Lỗi 3: Tạo nhầm Web application
Với phần mềm Windows, nếu bạn tạo OAuth Client dạng Web application trong khi code đang dùng flow dành cho installed/desktop app, callback và quá trình đăng nhập có thể không khớp. Hãy tạo lại đúng loại Desktop app.
Lỗi 4: Đăng nhập lại sau khoảng 7 ngày
Nếu OAuth App vẫn ở Testing và đang sử dụng scope YouTube, quyền test có thể hết hạn sau 7 ngày. Đây là hành vi được Google mô tả cho Testing users khi app yêu cầu các scope ngoài bộ thông tin hồ sơ cơ bản.
Lỗi 5: OAuth thành công nhưng chọn nhầm kênh
Một tài khoản Google có thể quản lý nhiều kênh hoặc Brand Account. Ứng dụng nên hiển thị rõ Channel ID và tên kênh sau khi đăng nhập. Nếu công cụ của bạn chỉ lấy một kết quả mặc định mà không kiểm tra đúng kênh, cần xử lý logic này trong phần mềm.
Lỗi 6: Scope không đủ quyền
Nếu chỉ cấp youtube.readonly, ứng dụng có thể đọc thông tin nhưng không upload video. Upload cần youtube.upload. Nếu upload thành công nhưng thêm playlist hoặc Remote Metadata Update trả về lỗi 403/insufficient permissions, hãy kiểm tra token hiện tại đã được cấp youtube.force-ssl hay chưa. Sau khi thêm scope vào Google Auth Platform, cần kết nối/cấp quyền OAuth lại để token mới nhận quyền bổ sung.
10. Quota YouTube API cần biết khi upload hàng loạt
Khi chỉ upload một vài video, quota thường ít được chú ý. Nhưng với batch hàng chục hoặc hàng trăm video, thumbnail, playlist và cập nhật metadata có thể tiêu thụ quota đáng kể. Google hiện tách videos.insert sang một bucket upload riêng: mặc định 100 lệnh gọi upload mỗi ngày, trong khi các endpoint thông thường khác dùng tổng quota mặc định 10.000 units/ngày. Hạn mức hằng ngày được Google đặt lại theo nửa đêm Pacific Time (PT).
| API operation | Quota hiện tại | Ứng dụng thực tế |
|---|---|---|
videos.insert | Bucket riêng, mặc định 100 call/ngày; 1 quota/call | Upload video |
videos.update | 50 units | Cập nhật title, description, tags, privacy/schedule… |
thumbnails.set | 50 units | Đặt thumbnail tùy chỉnh |
playlistItems.insert | 50 units | Thêm video vào một playlist |
playlistItems.delete | 50 units | Gỡ video khỏi playlist |
playlists.list | 1 unit | Quét danh sách phát của kênh |
videos.list | 1 unit | Đọc/verify video và trạng thái |
captions.insert | 400 units | Upload một caption/subtitle track |
captions.update | 450 units | Cập nhật caption track |
Ví dụ: 100 video dài, mỗi video cần 1 thumbnail và được thêm vào 2 playlist sẽ tạo khoảng 100 lần thumbnails.set + 200 lần playlistItems.insert, tương đương khoảng 15.000 units chỉ riêng hai nhóm thao tác này. Vì vậy một batch có thể upload video thành công nhưng các bước hậu xử lý dừng giữa chừng do quota nhóm endpoint thông thường đã hết.
Với CV YouTube Publisher, nên xem quota như nhiều loại tài nguyên khác nhau: upload video dùng bucket videos.insert, còn thumbnail, playlist, metadata và caption dùng quota units. Thiết kế queue/retry tốt phải lưu trạng thái từng bước để ngày hôm sau tiếp tục phần còn thiếu thay vì upload lại MP4.
Xem bảng mới nhất tại YouTube Data API – Quota Calculator.
11. Vì sao upload thành công nhưng video vẫn bị khóa Private?
Đây là một điểm rất quan trọng đối với bất kỳ ai tự xây uploader YouTube bằng API.
Tài liệu chính thức của YouTube hiện nêu rõ: video được upload bằng endpoint videos.insert từ các API Project chưa được xác minh và được tạo sau ngày 28/07/2020 có thể bị giới hạn ở chế độ xem Private. Để gỡ hạn chế, Project phải trải qua quy trình audit để YouTube xác minh việc tuân thủ Điều khoản dịch vụ API.
Điều này tạo ra hai tình huống hoàn toàn khác nhau:
| Tình huống | Ý nghĩa |
|---|---|
| Bạn chủ động chọn Private | Hoạt động bình thường, không có vấn đề. |
| Bạn yêu cầu Public/Scheduled nhưng video vẫn bị hạn chế Private | Có thể liên quan trạng thái xác minh/audit của YouTube API Project. |
Đừng vội kết luận phần mềm upload bị lỗi. Nếu video đã được upload, có Video ID nhưng privacy không hoạt động như mong muốn, cần kiểm tra trạng thái API Project và yêu cầu YouTube API Services Audit.
Vì lý do này, khi phát triển một công cụ upload YouTube, quy trình hợp lý là:
POC OAuth → Upload 1 video Private → Kiểm tra Video ID → Kiểm tra đúng kênh → Sau đó mới test Unlisted/Public/Schedule → Khi cần phát hành chính thức, xử lý Verification/Audit
12. Lưu ý bảo mật khi làm việc với OAuth JSON và Token
File Client JSON và token OAuth liên quan trực tiếp tới ứng dụng và quyền tài khoản. Không nên coi chúng như các file cấu hình thông thường có thể đưa lên mạng công khai.
Không upload Client JSON lên GitHub công khai
Hãy thêm file credentials vào .gitignore nếu dự án dùng Git.
Không lưu mật khẩu Google trong ứng dụng
OAuth tồn tại để ứng dụng không cần biết mật khẩu Google của người dùng. Phần mềm chỉ nên mở trang đăng nhập chính thức của Google và nhận token sau khi người dùng cấp quyền.
Bảo vệ refresh token
Nếu ứng dụng desktop lưu refresh token để người dùng không phải đăng nhập mỗi lần mở phần mềm, token nên được mã hóa ở máy cục bộ, chẳng hạn sử dụng cơ chế bảo vệ credentials của hệ điều hành Windows thay vì lưu plaintext trong JSON hoặc SQLite.
Chỉ xin scope tối thiểu phù hợp với chức năng
Nếu ứng dụng chỉ đọc thông tin kênh và upload video thì không cần xin thêm quyền ghi rộng. Nhưng khi công cụ có multi-playlist, Remote Metadata Update hoặc subtitle, youtube.force-ssl trở thành một quyền chức năng có lý do rõ ràng. Dù vậy, vẫn không nên xin các scope YouTube Partner hoặc các quyền không được phần mềm sử dụng.
13. Checklist: cấu hình hoàn chỉnh từ đầu tới cuối
Nếu cần một danh sách ngắn để kiểm tra, hãy đối chiếu từng mục sau:
- Tạo Google Cloud Project mới.
- Đảm bảo đang chọn đúng Project.
- Bật YouTube Data API v3.
- Mở Google Auth Platform.
- Điền App name và User support email.
- Chọn Audience phù hợp; với Gmail cá nhân thường là External.
- Để Publishing status là Testing trong giai đoạn phát triển.
- Thêm Gmail dùng để test vào Test users.
- Trong Data Access, thêm
youtube.upload. - Thêm
youtube.readonlyđể đọc thông tin kênh/trạng thái cần thiết. - Nếu dùng CV YouTube Publisher v0.3.3 hoặc cần playlist/Remote Metadata Update, thêm
youtube.force-ssl. - Nếu vừa bổ sung scope vào một OAuth Client đã dùng trước đây, kết nối/cấp quyền lại để token mới nhận scope bổ sung.
- Vào Clients → Create Client.
- Chọn Application type = Desktop app.
- Đặt tên OAuth Client.
- Tải file JSON về máy.
- Không chỉnh sửa thủ công file JSON.
- Đưa JSON vào ứng dụng desktop.
- Đăng nhập bằng đúng tài khoản nằm trong Test users.
- Test upload một video nhỏ ở chế độ Private.
- Kiểm tra ứng dụng nhận được Video ID và đúng kênh.
- Sau khi POC ổn định mới xử lý Production, Verification và YouTube API Audit nếu cần.
14. Nguồn tài liệu chính thức nên lưu lại
Google thường thay đổi bố cục giao diện Cloud Console, vì vậy tên nút hoặc vị trí menu có thể thay đổi theo thời gian. Khi gặp khác biệt, hãy ưu tiên tài liệu chính thức thay vì làm theo ảnh chụp từ một bài hướng dẫn quá cũ.
- YouTube Data API v3 – Getting Started
- OAuth 2.0 for Mobile & Desktop Apps – YouTube Data API
- Obtaining authorization credentials – YouTube Data API
- Configure OAuth consent and choose scopes – Google
- Manage App Audience – Google Cloud Help
- Videos: insert – YouTube Data API
- Videos resource và lưu ý về unverified API projects
- PlaylistItems: insert – scope và quota khi thêm video vào playlist
- Videos: update – cập nhật metadata và yêu cầu youtube.force-ssl
- YouTube Data API – Quota Calculator
- Captions: insert – scope và quota cho subtitle/caption
- Manage App Audience – Testing, Test Users và thời hạn 7 ngày
14. Kết luận
Cấu hình Google Cloud cho một công cụ upload YouTube không khó, nhưng có nhiều lớp dễ gây nhầm: Project, API, Google Auth Platform, Audience, Test Users, OAuth Scope, Client ID và cuối cùng là trạng thái verification/audit của YouTube API.
Nếu mục tiêu là xây một công cụ upload YouTube desktop, cách an toàn nhất là bắt đầu nhỏ: tạo Project, bật YouTube Data API v3, tạo OAuth Client dạng Desktop app, xin đúng quyền theo chức năng rồi upload thử một video Private. Với CV YouTube Publisher v0.3.3, bộ scope hiện tại là youtube.upload + youtube.readonly + youtube.force-ssl. Khi chuỗi OAuth → Channel → Upload → Video ID đã hoạt động ổn định, bạn mới nên chạy batch lớn, playlist, Remote Metadata Update, schedule hoặc subtitle.
Việc chia quá trình thành từng checkpoint như vậy giúp phân biệt rõ lỗi do code, lỗi do OAuth, lỗi do quyền tài khoản và giới hạn đến từ chính YouTube API.
Gợi ý: Nếu bạn đang tự xây công cụ upload YouTube hoặc các phần mềm tự động hóa nội dung, hãy lưu lại bài viết này làm checklist cấu hình OAuth ban đầu. Trên congvietit.com, mình sẽ tiếp tục chia sẻ các bài thực hành về API, automation, SEO, YouTube và công cụ hỗ trợ sản xuất nội dung.



