Cấu hình Google OAuth cho domain mới (Next.js và .NET API)
Tạo OAuth Client ID mới trên Google Cloud Console cho domain mới, khai báo đúng JavaScript origins và redirect URIs, rồi cập nhật biến môi trường cho Frontend Next.js và Backend .NET API.
Mục lục
Khi hệ thống chuyển sang một email quản trị mới và domain mới, bạn phải làm lại thông tin xác thực Google OAuth: khai báo ứng dụng trên Google Cloud Console, lấy Client ID và Client Secret mới, rồi cập nhật biến môi trường cho cả Frontend (Next.js) lẫn Backend (.NET API). Bài này đi lần lượt từng bước.
Trong toàn bài, example.com là domain Frontend và api.example.com là domain Backend -
thay bằng domain thật của bạn. <client-id> và <client-secret> là hai giá trị Google
cấp ở Bước 2.
Tóm tắt thao tác nhanh
- Google Cloud: tạo Client ID loại
Web applicationtrong mục Credentials. - Authorized JavaScript origins: các URL gốc (
http://localhost:3000,https://example.com). - Authorized redirect URIs: các đường dẫn callback (ví dụ
.../api/auth/google/callback). - Copy Client ID và Client Secret vừa sinh ra.
- Frontend: cập nhật
NEXT_PUBLIC_API_URL,NEXT_PUBLIC_GOOGLE_CLIENT_IDtrong.env. - Backend: cập nhật
Google__ClientId,Google__ClientSecret,Google__RedirectUrivàFrontend__BaseUrl.
Bước 1: Khai báo ứng dụng trên Google Cloud (OAuth consent screen)
Nếu bạn chưa tạo màn hình đồng ý (consent screen) cho email mới:
- Đăng nhập Google Cloud Console.
- Tạo dự án mới hoặc chọn dự án hiện tại.
- Vào APIs & Services -> OAuth consent screen (hoặc nhấn nút Get Started trên giao diện mới).
- Chọn User Type: External và tiếp tục.
- Điền thông tin:
- App name: tên ứng dụng của bạn.
- User support email và Developer contact email: email của bạn.
- Authorized domains: tên miền chính (ví dụ
example.com).
- Nhấn Save and Continue cho đến khi hoàn thành (Finish).
Bước 2: Tạo Credentials để lấy Client ID và Client Secret
- Chuyển sang mục Credentials (menu bên trái).
- Nhấn nút xanh + CREATE CREDENTIALS (hoặc CREATE CLIENT) -> chọn OAuth client ID.
- Tại trường Application type, chọn Web application.
- Đặt Name cho client (ví dụ
Project Web Client). - Ở Authorized JavaScript origins (nguồn gốc ứng dụng), thêm:
http://localhost:3000https://example.com
- Ở Authorized redirect URIs (đường dẫn chuyển hướng trả về), thêm đủ các link
callback:
http://localhost:3000/vi/auth/callbackhttp://localhost:3000/en/auth/callbackhttps://example.com/vi/auth/callbackhttps://example.com/en/auth/callbackhttps://api.example.com/api/auth/google/callback(dành cho Backend xử lý)
- Nhấn Create. Sao chép ngay Client ID và Client Secret vừa được cấp.
Client Secret là bí mật phía server: chỉ đặt ở Backend, KHÔNG đưa vào biến
NEXT_PUBLIC_* (sẽ lộ ra trình duyệt) và không commit file .env lên Git.
Bước 3: Cập nhật biến môi trường cho Frontend
Mở file .env (hoặc cấu hình môi trường deploy) của dự án Frontend (Next.js) và thay
đổi:
# Trỏ Backend base URL về domain mới
NEXT_PUBLIC_API_URL=https://api.example.com/api
# Google Client ID vừa lấy ở Bước 2
NEXT_PUBLIC_GOOGLE_CLIENT_ID=<client-id>Bước 4: Cập nhật biến môi trường cho Backend
Mở file .env (hoặc file cấu hình production) của dự án Backend (.NET API) và sửa:
# Cấu hình Google OAuth
Google__ClientId=<client-id>
Google__ClientSecret=<client-secret>
Google__RedirectUri=https://api.example.com/api/auth/google/callback
# Frontend base URL, dùng để setup CORS và các logic redirect liên quan
Frontend__BaseUrl=https://example.comLưu ý
| Triệu chứng | Cách xử lý |
|---|---|
Lỗi redirect_uri_mismatch | URL gọi từ trình duyệt lên API phải khớp chính xác 100% (kể cả phần http(s) và dấu / cuối nếu có) với danh sách đã khai báo trong Authorized redirect URIs trên Google Cloud |
| Vừa lưu cấu hình nhưng đăng nhập vẫn lỗi | Google có thể mất 5-10 phút để cấu hình mới và domain hoạt động đầy đủ trên hệ thống của họ - chờ rồi thử lại |
Backend chạy sau proxy (Cloudflare / Nginx / Caddy) sinh RedirectUri dạng http rồi bị mismatch | Cấu hình đúng Forwarded Headers (X-Forwarded-Proto) để máy chủ nhận diện giao thức đang gọi là https. Nếu dùng Caddy, xem hướng dẫn Caddy reverse proxy |