Dan Tech Academy
Sau bài này bạn sẽ
  • Nhận diện tài khoản dịch vụ nào cần ngay và tài khoản nào để sau, cho cả Android và iOS
  • Làm theo thứ tự setup: xác nhận GitHub trước, rồi tạo Supabase dev project free-tier
  • Phân biệt value được phép nằm trong app với secret backend-only như Supabase service role key
Thời lượng14 phút
Độ khóBeginner

Checklist Tài Khoản Dịch Vụ

Biết những tài khoản bên ngoài nào cần có và lý do cần từng cái.

Video đang cập nhật

Video bài học sắp lên sóng

Trong lúc chờ, bạn hãy đọc bản text của bài học bên dưới: đầy đủ lý thuyết, code mẫu và checklist thực hành.

Bản quay đang trong khâu hậu kỳ

Mục Tiêu Bài Học

Sau bài này, bạn sẽ biết:

  • Những tài khoản nào cần trước first build, và tài khoản nào để sau cũng được,
  • Thứ tự setup an toàn,
  • Value nào được phép nằm trong app, value nào không bao giờ.

Vì Sao Bài Này Tồn Tại

Một mobile app production hiếm khi chỉ chạy trên máy. Nó giao tiếp với auth provider, database, analytics, Remote Config, release dashboard, payment system và đôi khi AI API. App của khóa học chạy trên cả Android và iOS, nên một số dịch vụ có cấu hình riêng cho từng nền tảng.

Người mới hay mở mọi dashboard và tạo mọi account ngay ngày đầu. Việc đó dễ tạo lo lắng về billing và rủi ro lộ secrets trước khi app build được. AI API là chỗ dễ tốn tiền nhất.

Chỉ dùng trang official:

ServiceTrang officialNó cung cấp gìKhi nào cần
GitHubTạo tài khoản GitHub, GitHub CLIPrivate repo access, terminal authentication, commits, pull requestsNgay bây giờ
SupabaseSupabase dashboard, Supabase API keysProject URL, publishable key (sb_publishable_...), backend-only secret key hoặc service role keyNgay bây giờ
FirebaseFirebase Console, Firebase Android setupAndroid app registration, google-services.json, Analytics, Remote ConfigTrước first build
Google CloudGoogle Cloud Console, OAuth consent docsOAuth consent screen, OAuth clients cho Google Sign-InKhi làm Google Sign-In
Gemini APIGoogle AI Studio API key page, Gemini API key docsAPI key cho AI hint (trên Android, app đọc key qua Firebase Remote Config)Khi làm AI hint
RevenueCatRevenueCat, RevenueCat API keysPublic SDK key cho subscription và paywallKhi làm premium
Apple DeveloperApple Developer ProgramKý app chạy trên iPhone thật, TestFlight, App StoreKhi ship iOS
Google Play ConsoleGoogle Play ConsoleRelease, app signing, store listing, closed testingKhi ship Android

Premium gate mặc định tắt (premium.gate.enabled không đặt thì là false), nên app chạy được khi chưa có RevenueCat. Chạy app trên iOS Simulator cũng không cần Apple Developer Program.

Nếu dashboard yêu cầu payment information, đọc kỹ và chọn free tier khi có thể. Đừng tạo billing resources production chỉ vì setup wizard gợi ý.

Thứ Tự Setup Khuyến Nghị

1. Xác Nhận GitHub Trước

Kiểm tra email invite cho private repo trước khi kéo code về. Chưa accept invite thì bạn không clone được repo. Nếu đã accept mà vẫn lỗi, liên hệ @dantech0xff qua Telegram.

Sau đó kiểm tra terminal authentication:

bash
gh auth status

Nếu bước này fail, cài GitHub CLI và chạy gh auth login trước.

2. Tạo Supabase Dev Project

Với mục đích học, free-tier dev project là đủ.

ValueLấy từ đâuGhi chú an toàn
Project URLNút Connect trên trang projectClient app dùng được.
Publishable keySupabase API keys pageClient app dùng được, nhưng nó vẫn định danh project của bạn.
Service role keySupabase API keys pageKhông bao giờ đặt key này trong app Android hay iOS.

Service role key bypass Row Level Security, nên chỉ dùng ở backend. App của khóa học không dùng đến nó.

3. Chuẩn Bị Firebase Và Google Cloud

  • Firebase là nơi register Android app và tải google-services.json.
  • Google Cloud là nơi quản lý OAuth consent và OAuth clients. Android dùng một web client ID (google.server.clientId). iOS cần thêm một iOS OAuth client riêng, chỉ khi bạn chạy bản iOS trên Mac.
  • Android package name và SHA-1 fingerprint phải khớp với app bạn test. Bundle ID của iOS phải khớp với iOS OAuth client.

Security Checklist

Trước khi paste bất kỳ value nào vào project, trả lời ba câu:

  1. Value này có được phép nằm trong app, nơi user có thể đọc ra không?
  2. File chứa nó đã được Git ignore chưa?
  3. Nếu nó bị lộ, mình có rotate được không?

Mọi thứ đóng gói vào app (Android hay iOS) đều có thể bị đọc ra. Supabase publishable key, OAuth client ID và RevenueCat public key được thiết kế để nằm trong app. Supabase secret key (sb_secret_...), service role key, database password và keystore password thì không.

Đăng nhập