Trong thế giới tự động hóa quy trình làm việc, n8n nổi lên như một công cụ mạnh mẽ và linh hoạt. Một trong những nhu cầu phổ biến nhất khi sử dụng n8n là kết nối với các dịch vụ của Google như Google Sheets, Gmail, Google Drive, v.v. Tuy nhiên, quá trình thiết lập kết nối này, đặc biệt là phần xác thực OAuth, đôi khi gây không ít bỡ ngỡ cho người mới bắt đầu. Những câu hỏi như "Tại sao code của tôi không được chấp nhận?" hay "Vì sao cứ sau 7 ngày lại phải xác thực lại?" luôn là những thắc mắc thường trực.
Bài viết này sẽ hướng dẫn bạn từng bước chi tiết cách kết nối n8n với Google API một cách chính xác, đồng thời giải thích cặn kẽ cơ chế hoạt động của Google OAuth và lý do đằng sau việc phải xác thực lại định kỳ. Hãy cùng theo dõi nhé!
Tại sao cần kết nối n8n với Google API và những vướng mắc thường gặp?
Việc kết nối n8n với Google API mở ra vô vàn khả năng tự động hóa. Bạn có thể tự động cập nhật dữ liệu vào Google Sheets, gửi email qua Gmail, quản lý file trên Google Drive, và nhiều hơn thế nữa, tất cả đều từ trong workflow của n8n.
Tuy nhiên, quá trình này đòi hỏi bạn phải tương tác với Google Cloud Console để tạo "cầu nối" cho n8n, đó chính là cơ chế OAuth 2.0. Đây là một tiêu chuẩn ngành cho phép ứng dụng bên thứ ba (như n8n) truy cập tài nguyên trên một dịch vụ web (như Google) thay mặt người dùng mà không cần biết mật khẩu của họ.
Những vấn đề thường gặp bao gồm:
- Không biết bắt đầu từ đâu trong Google Cloud Console.
- Nhầm lẫn giữa các loại credentials.
- Gặp lỗi khi n8n cố gắng lấy token.
- Ứng dụng bị yêu cầu xác thực lại sau mỗi 7 ngày, gây gián đoạn workflow.
Bài viết này sẽ giúp bạn giải quyết tất cả những vấn đề trên. Nếu bạn đã từng tìm hiểu về cách kết nối n8n với Facebook Graph API, bạn sẽ thấy có nhiều điểm tương đồng trong quy trình sử dụng OAuth.
Bước chuẩn bị: Tạo dự án trên Google Cloud Console
Để bắt đầu, bạn cần có một dự án trên Google Cloud Platform. Đây là nơi bạn sẽ quản lý tất cả các API và dịch vụ Google mà ứng dụng của bạn (trong trường hợp này là n8n) sẽ tương tác.
- Truy cập Google Cloud Console: Mở trình duyệt và đi đến địa chỉ console.cloud.google.com. Đăng nhập bằng tài khoản Google của bạn.
- Tạo hoặc chọn một Project:
- Nếu bạn chưa có Project nào, Google Cloud Console có thể sẽ yêu cầu bạn tạo một Project mới ngay.
- Nếu đã có Project, bạn có thể chọn một Project hiện có từ thanh menu trên cùng hoặc tạo một Project mới bằng cách nhấp vào tên Project hiện tại và chọn "New Project".
- Khi tạo Project mới:
- Project name: Đặt một tên dễ nhớ, ví dụ: "Connect n8n with Google".
- Location: Nếu bạn không thuộc một tổ chức công ty cụ thể, hãy chọn "No organization".
- Nhấn "Create".
Sau khi Project được tạo, hãy đảm bảo bạn đã chọn đúng Project đó để làm việc.
Cấu hình xác thực OAuth 2.0 cho ứng dụng của bạn
Tiếp theo, chúng ta cần cấu hình màn hình yêu cầu sự đồng ý OAuth (OAuth Consent Screen) và tạo thông tin xác thực (Credentials) cho ứng dụng mà n8n sẽ sử dụng.
1. Tạo OAuth Consent Screen (Màn hình yêu cầu sự đồng ý OAuth)
OAuth Consent Screen là màn hình mà người dùng sẽ thấy khi n8n yêu cầu quyền truy cập vào dữ liệu Google của họ.
- Trong Google Cloud Console, từ menu điều hướng (biểu tượng ba dấu gạch ngang), chọn APIs & Services > OAuth consent screen.
- User Type:
- Internal: Chỉ khả dụng nếu bạn là một phần của tổ chức Google Workspace. Ứng dụng chỉ có thể được sử dụng bởi người dùng trong tổ chức của bạn.
- External: Dành cho mọi người dùng có tài khoản Google. Khi mới bắt đầu, ứng dụng của bạn sẽ ở chế độ "testing". Chọn External và nhấn Create.
- App information:
- App name: Đặt tên cho ứng dụng của bạn, ví dụ "n8n Google Services" hoặc "n8n Google Sheets Access". Đây là tên người dùng sẽ thấy.
- User support email: Chọn địa chỉ email của bạn để người dùng có thể liên hệ nếu cần hỗ trợ.
- App logo: (Tùy chọn) Bạn có thể tải lên logo cho ứng dụng.
- Developer contact information: Nhập địa chỉ email của bạn. Google sẽ sử dụng email này để thông báo cho bạn về bất kỳ thay đổi nào đối với dự án của bạn.
- Nhấn Save and Continue qua các mục "Scopes" và "Optional info" (chúng ta sẽ không cấu hình chi tiết ở đây cho mục đích cơ bản).
- Test users:
- Khi ứng dụng của bạn ở chế độ "testing" (External), chỉ những người dùng được thêm vào danh sách "Test users" mới có thể cấp quyền cho ứng dụng.
- Nhấn Add Users và nhập địa chỉ email Google của chính bạn (hoặc bất kỳ ai bạn muốn cho phép thử nghiệm).
- Nhấn Save and Continue.
- Review lại thông tin ở trang Summary và nhấn Back to Dashboard.
Lưu ý quan trọng:
- Ứng dụng ở chế độ "testing" sẽ có giới hạn về số lượng người dùng (thường là 100 test users) và token làm mới (refresh token) sẽ hết hạn sau 7 ngày.
- Để gỡ bỏ những giới hạn này, bạn cần phải "Publish app" (Đưa ứng dụng vào Production), quá trình này có thể yêu cầu Google xác minh ứng dụng của bạn.
2. Tạo Credentials (Thông tin xác thực OAuth 2.0 client IDs)
Credentials là thứ mà n8n sẽ sử dụng để tự nhận dạng với Google khi yêu cầu quyền truy cập.
- Trong menu điều hướng, chọn APIs & Services > Credentials.
- Nhấn vào + Create Credentials ở đầu trang và chọn OAuth client ID.
- Application type: Chọn Web application.
- Name: Đặt tên cho client OAuth này, ví dụ "n8n Google Web Client".
- Authorized JavaScript origins: (Để trống cho trường hợp này)
- Authorized redirect URIs: Đây là phần cực kỳ quan trọng. Đây là URL mà Google sẽ chuyển hướng người dùng trở lại sau khi họ đã cấp quyền cho ứng dụng của bạn. n8n sẽ cung cấp URL này cho bạn.
- Để lấy URL này từ n8n:
- Mở n8n, tạo một workflow mới.
- Thêm một node liên quan đến Google, ví dụ "Google Sheets".
- Trong phần "Credentials" của node, chọn "Create New".
- Bạn sẽ thấy một trường có tên là OAuth Redirect URL hoặc tương tự. Hãy sao chép URL này. (Nó thường có dạng
https://[your-n8n-domain]/rest/oauth2-credential/callback
).
- Quay lại Google Cloud Console, nhấn + Add URI và dán URL bạn vừa sao chép từ n8n vào.
- Để lấy URL này từ n8n:
- Nhấn Create.
Sau khi tạo thành công, một cửa sổ sẽ hiện ra hiển thị Your Client ID và Your Client Secret. Hãy sao chép và lưu trữ cẩn thận cả hai giá trị này. Bạn sẽ cần chúng để cấu hình trong n8n. Đây là thông tin nhạy cảm, đừng chia sẻ công khai.
Kết nối n8n với Google API sử dụng Credentials vừa tạo
Bây giờ bạn đã có Client ID và Client Secret, hãy quay lại n8n để hoàn tất kết nối.
- Mở n8n và node Google:
- Quay lại node Google Sheets (hoặc node Google khác) mà bạn đã thêm vào workflow.
- Trong phần "Authentication", chọn "OAuth2".
- Trong phần "Credential for Google API", chọn "Create New" (hoặc chọn credential đã có nếu bạn đang cập nhật).
- Điền thông tin Credential:
- Credential Name: Đặt một tên dễ nhớ cho credential này trong n8n, ví dụ "My Google OAuth".
- Client ID: Dán Client ID bạn đã lưu từ Google Cloud Console.
- Client Secret: Dán Client Secret bạn đã lưu từ Google Cloud Console.
- Scope: (Thường n8n sẽ tự điền scope cần thiết cho node bạn đang dùng, ví dụ cho Google Sheets là
https://www.googleapis.com/auth/spreadsheets
). Bạn có thể thêm các scope khác nếu cần, cách nhau bằng dấu phẩy.
- Xác thực với Google:
- Nhấn nút Sign in with Google (hoặc tương tự).
- Một cửa sổ trình duyệt mới sẽ mở ra, đưa bạn đến màn hình đăng nhập Google. Đăng nhập bằng tài khoản Google mà bạn đã thêm vào danh sách "Test users" ở bước OAuth Consent Screen.
- Bạn sẽ thấy màn hình yêu cầu quyền truy cập của ứng dụng (với tên App name bạn đã đặt). Hãy xem kỹ các quyền được yêu cầu và nhấn Allow hoặc Continue.
- Nếu thành công, bạn sẽ được chuyển hướng trở lại n8n và thấy thông báo kết nối thành công. Credential của bạn đã được lưu.
Kích hoạt Google API cần thiết (Ví dụ: Google Sheets API)
Chỉ tạo OAuth client thôi là chưa đủ. Bạn cần phải bật (enable) các API cụ thể mà bạn muốn n8n sử dụng.
- Quay lại Google Cloud Console, đảm bảo bạn đang ở trong Project đã tạo.
- Từ menu điều hướng, chọn APIs & Services > Library.
- Sử dụng thanh tìm kiếm để tìm API bạn cần. Ví dụ, nếu muốn dùng Google Sheets, gõ "Google Sheets API".
- Chọn API từ kết quả tìm kiếm (ví dụ: "Google Sheets API").
- Nhấn nút Enable. Nếu nút này là "Manage" thì API đã được bật.
Lặp lại quy trình này cho bất kỳ API Google nào khác mà bạn muốn sử dụng với n8n (ví dụ: "Gmail API", "Google Drive API", v.v.).
Thử nghiệm kết nối:
Sau khi đã bật API, hãy quay lại workflow n8n của bạn và thử thực thi node Google (ví dụ: tạo một file Google Sheet mới). Nếu không có lỗi và thao tác thành công, xin chúc mừng! Bạn đã kết nối n8n với Google API thành công.
Giải mã cơ chế Google OAuth: Tại sao và hoạt động như thế nào?
Hiểu rõ cách OAuth hoạt động sẽ giúp bạn tự tin hơn khi xử lý các vấn đề liên quan đến xác thực.
Vai trò của Client ID và Client Secret
Hãy tưởng tượng Client ID như là "tên người dùng" công khai của ứng dụng bạn, còn Client Secret là "mật khẩu" bí mật của ứng dụng. Chúng được sử dụng để xác định ứng dụng của bạn với Google.
Luồng hoạt động cơ bản của OAuth 2.0 (Authorization Code Grant)
Đây là luồng phổ biến nhất mà n8n sử dụng:
-
Yêu cầu ủy quyền (Authorization Request):
- Khi bạn nhấn "Sign in with Google" trong n8n, n8n sẽ chuyển hướng trình duyệt của bạn đến một URL của Google, kèm theo
Client ID
,Redirect URI
đã đăng ký, vàScope
(các quyền mà ứng dụng yêu cầu).
- Khi bạn nhấn "Sign in with Google" trong n8n, n8n sẽ chuyển hướng trình duyệt của bạn đến một URL của Google, kèm theo
-
Người dùng xác thực và cấp quyền (User Authentication & Consent):
- Google yêu cầu bạn đăng nhập (nếu chưa đăng nhập).
- Google hiển thị màn hình OAuth Consent Screen, liệt kê các quyền mà ứng dụng (ví dụ "n8n Google Services") đang yêu cầu.
- Nếu bạn đồng ý, bạn nhấn "Allow".
-
Google cấp Mã Ủy Quyền (Authorization Code):
- Nếu bạn đồng ý, Google sẽ chuyển hướng trình duyệt của bạn trở lại
Redirect URI
mà bạn đã cung cấp khi tạo client OAuth, kèm theo mộtAuthorization Code
(mã ủy quyền tạm thời).
- Nếu bạn đồng ý, Google sẽ chuyển hướng trình duyệt của bạn trở lại
-
Đổi Mã Ủy Quyền lấy Token Truy Cập (Exchange Authorization Code for Tokens):
- N8n (chạy trên server của bạn) nhận được
Authorization Code
này. - Sau đó, n8n gửi một yêu cầu trực tiếp (server-to-server) đến Google, bao gồm
Authorization Code
,Client ID
, vàClient Secret
. - Nếu tất cả thông tin hợp lệ, Google sẽ trả về cho n8n:
- Access Token (Token Truy Cập): Một chuỗi ký tự dùng để xác thực các yêu cầu API tiếp theo tới tài nguyên Google. Access Token thường có thời hạn sử dụng ngắn (ví dụ: 1 giờ).
- Refresh Token (Token Làm Mới): Một chuỗi ký tự dùng để lấy Access Token mới khi Access Token cũ hết hạn, mà không cần người dùng phải đăng nhập và cấp quyền lại. Refresh Token thường có thời hạn sử dụng dài hơn nhiều.
- N8n (chạy trên server của bạn) nhận được
-
Truy cập tài nguyên được bảo vệ (Accessing Protected Resources):
- Khi n8n cần thực hiện một thao tác với Google API (ví dụ: đọc/ghi Google Sheets), nó sẽ đính kèm
Access Token
hợp lệ vào header của yêu cầu API. - Google xác minh Access Token. Nếu hợp lệ, Google sẽ xử lý yêu cầu và trả về kết quả.
- Khi n8n cần thực hiện một thao tác với Google API (ví dụ: đọc/ghi Google Sheets), nó sẽ đính kèm
Refresh Token và lý do "sống sót" qua 1 giờ
Vì Access Token chỉ có hiệu lực trong 1 giờ, nếu không có Refresh Token, bạn sẽ phải đăng nhập lại mỗi giờ. Refresh Token giải quyết vấn đề này:
- Khi Access Token hết hạn, n8n sẽ tự động sử dụng Refresh Token để yêu cầu một Access Token mới từ Google. Quá trình này diễn ra ngầm mà không cần sự can thiệp của bạn.
N8n đã được lập trình sẵn để xử lý toàn bộ quy trình phức tạp này, bạn chỉ cần cung cấp Client ID, Client Secret và thực hiện bước cấp quyền ban đầu.
Tại sao bạn phải xác thực lại sau mỗi 7 ngày và giải pháp tiềm năng?
Đây là một trong những câu hỏi được quan tâm nhất. Lý do chính nằm ở trạng thái "testing" của ứng dụng OAuth bạn đã tạo trên Google Cloud Console.
Refresh Token trong môi trường thử nghiệm (Testing)
- Khi ứng dụng của bạn (được xác định bởi Client ID) đang ở trạng thái "testing" (tức là bạn chưa "Publish app" và Google chưa xác minh nó), Refresh Token do Google cấp sẽ hết hạn sau 7 ngày.
- Khi Refresh Token hết hạn, n8n không thể tự động lấy Access Token mới được nữa. Lúc này, bạn phải thực hiện lại quy trình xác thực OAuth từ đầu trong n8n (nhấn nút "Sign in with Google" một lần nữa) để nhận được một bộ Refresh Token và Access Token mới.
Môi trường Production và sự khác biệt
- Nếu ứng dụng OAuth của bạn được chuyển sang trạng thái "production" (nghĩa là bạn đã chọn "Publish app" trong OAuth Consent Screen và có thể đã qua quá trình xác minh của Google), Refresh Token được cấp có thể có thời hạn dài hơn nhiều (ví dụ, 6 tháng hoặc cho đến khi bị thu hồi).
- Đây là lý do tại sao nếu bạn sử dụng phiên bản n8n Cloud, bạn thường không gặp phải vấn đề xác thực lại sau 7 ngày. Ứng dụng OAuth mà n8n Cloud sử dụng đã được đưa vào production và xác minh bởi Google, cho phép họ nhận được các Refresh Token "sống lâu".
- Khi bạn tự host n8n và tạo ứng dụng OAuth của riêng mình, mặc định nó sẽ ở trạng thái "testing".
Gợi ý về giải pháp tiềm năng: Google Apps Script?
Trong video gốc, có một gợi ý về việc sử dụng "script app dot get o out", tức là ScriptApp.getOAuthToken()
trong Google Apps Script. Đây là một phương thức trong Google Apps Script cho phép một script chạy trên server của Google lấy OAuth2 token để gọi các API khác của Google dưới danh nghĩa người dùng đã ủy quyền cho script đó.
- Lợi ích tiềm năng: Token được quản lý trong môi trường Google có thể có vòng đời khác.
- Lưu ý: Việc tích hợp điều này trực tiếp để n8n (chạy trên server của bạn) sử dụng token từ Apps Script là không đơn giản và có thể không phải là giải pháp tối ưu cho mọi trường hợp. Nó đòi hỏi kiến thức lập trình và hiểu biết sâu về cả hai nền tảng. Thông tin này được đưa ra như một "keyword" để bạn có thể tự tìm hiểu thêm nếu muốn khám phá các giải pháp nâng cao hơn, đặc biệt nếu bạn đã quen thuộc với Google Apps Script. Tuy nhiên, đối với hầu hết người dùng, việc đưa ứng dụng OAuth lên "production" (nếu khả thi) hoặc chấp nhận việc xác thực lại sau 7 ngày (nếu chỉ dùng cho mục đích cá nhân/thử nghiệm) là những cách tiếp cận phổ biến hơn.
Việc hiểu rõ về cơ chế OAuth và các trạng thái của ứng dụng giúp bạn không còn phụ thuộc hoàn toàn vào các node có sẵn của n8n. Nếu một ngày nào đó một node gặp sự cố, bạn hoàn toàn có thể sử dụng node HTTP Request của n8n để tự mình thực hiện các bước gọi API thủ công, tương tự như cách bạn tương tác với Facebook Graph API hoặc các API khác.
Kết luận
Việc kết nối n8n với Google API thông qua OAuth ban đầu có vẻ hơi phức tạp, nhưng khi bạn đã nắm vững các bước và hiểu được cơ chế hoạt động đằng sau, mọi thứ sẽ trở nên rõ ràng hơn rất nhiều.
Tóm lại, các bước chính bao gồm:
- Tạo Project trên Google Cloud Console.
- Cấu hình OAuth Consent Screen và thêm Test Users.
- Tạo OAuth 2.0 Client ID (Web application) và lưu lại Client ID, Client Secret.
- Sử dụng Client ID và Client Secret để tạo Credential trong n8n và thực hiện xác thực.
- Kích hoạt các Google API cần thiết trong Library.
Việc Refresh Token hết hạn sau 7 ngày là một đặc điểm của ứng dụng OAuth ở trạng thái "testing". Để có thời gian sử dụng lâu hơn, bạn cần xem xét việc đưa ứng dụng của mình lên trạng thái "production", tuy nhiên điều này có thể đòi hỏi các bước xác minh từ Google.
Hy vọng bài viết này đã cung cấp cho bạn một cái nhìn chi tiết và dễ hiểu về cách kết nối n8n với Google API, cũng như giải đáp được những thắc mắc thường gặp. Chúc bạn thành công trên hành trình tự động hóa của mình với n8n!