PaperMate / docs /database /GOOGLE_LOGIN_SETUP.md
ntphuc149's picture
refactor: reorganize docs/ into database/ and parser/ subdirectories
7fe0356
|
Raw
History Blame
3.6 kB

Hướng dẫn setup đăng nhập Google (Supabase Auth)

Dự án dùng Supabase Auth (GoTrue) + Google provider. Với Supabase hosted, callback OAuth do Supabase host sẵn (HTTPS) → dev trên localhost không cần ngrok.

Project ref: <project_name> Supabase callback URL: https://<project_name>.supabase.co/auth/v1/callback


Bước 1 — Tạo OAuth Client trên Google Cloud Console

  1. Vào https://console.cloud.google.com/ → chọn (hoặc tạo) một Project.
  2. APIs & Services → OAuth consent screen (nếu chưa cấu hình):
    • User type: External → Create.
    • Điền App name, User support email, Developer email → Save.
    • Mục Test users: thêm example@mail.com (và email team) để login được khi app còn ở chế độ Testing.
  3. APIs & Services → Credentials → + Create credentials → OAuth client ID:
    • Application type: Web application.
    • Authorized JavaScript origins → Add:
      http://localhost:8000
      
    • Authorized redirect URIs → Add (đây là URL của Supabase, KHÔNG phải app của bạn):
      https://vozlvfbdbepnfzlkvong.supabase.co/auth/v1/callback
      
    • Create → lưu lại Client IDClient secret.

Bước 2 — Bật Google provider trong Supabase

  1. Vào https://supabase.com/dashboard → chọn project → Authentication → Sign In / Providers → Google.
  2. Bật Enable, dán Client IDClient Secret từ Bước 1 → Save.

Bước 3 — Cấu hình URL redirect trong Supabase

Authentication → URL Configuration:

  • Site URL: http://localhost:8000 (đổi sang domain production khi deploy).
  • Redirect URLs → Add:
    http://localhost:8000/app/login.html
    http://localhost:8000/app/admin.html
    
    (Khi deploy production thì thêm https://<domain>/app/login.html, v.v.)

Bước 4 — Lấy anon/publishable key cho frontend → điền vào .env

Frontend cần 1 key public để khởi tạo Supabase client. Vào Project Settings → API Keys (hoặc API), copy một trong hai:

  • Legacy anon key — chuỗi JWT dài bắt đầu bằng eyJ... (mục Legacy / JWT keys). Đơn giản, chắc ăn.
  • Publishable key — bắt đầu bằng sb_publishable_... (định dạng API key mới; cùng hệ với sb_secret_... mà service_role đang dùng).

Cả hai đều an toàn để lộ ra frontend (chỉ truy cập được dữ liệu qua RLS). Dán vào .env:

SUPABASE_ANON_KEY=<dán key vừa copy>

⚠️ KHÔNG dùng service_role / sb_secret_... cho frontend — key đó bypass RLS, lộ là toang.


Bước 5 — Chạy & test

uvicorn backend.main:app --port 8000

Mở http://localhost:8000/app/login.htmlSign in with Google.

  • Admin (example@gmail.com) sẽ tự được set role=admin ngay lần đầu → tự nhảy vào home.html.
  • Mở thử bằng tài khoản thường → vào /api/admin/overview phải bị 403.

Phải mở qua http://localhost:8000/app/... (KHÔNG mở file .html trực tiếp bằng file:// — OAuth không chạy với file://).


Khi nào cần ngrok?

Chỉ khi muốn 1 URL public HTTPS để test trên máy/thiết bị khác hoặc demo giống production:

ngrok http 8000

Rồi thêm URL ngrok vào Google → Authorized JavaScript originsSupabase → Redirect URLs. Dev localhost hằng ngày thì không cần.