Tìm hiểu về cách sử dụng và quản lý khoá API cho Firebase
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Khoá API là một chuỗi duy nhất dùng để định tuyến các yêu cầu đến dự án Firebase của bạn khi tương tác với các dịch vụ của Firebase và Google. Trang này mô tả thông tin cơ bản về khoá API cũng như các phương pháp hay nhất để sử dụng và quản lý khoá API với các ứng dụng Firebase.
Thông tin chung về khoá API và Firebase
Khoá API cho Firebase khác với khoá API thông thường
Không giống như cách thường dùng khoá API, khoá API cho các dịch vụ Firebase không dùng để kiểm soát quyền truy cập vào các tài nguyên phụ trợ; bạn chỉ có thể thực hiện việc này bằng Firebase Security Rules (để kiểm soát người dùng cuối nào có thể truy cập vào tài nguyên) và Firebase App Check (để kiểm soát ứng dụng nào có thể truy cập vào tài nguyên).
Thông thường, bạn cần phải bảo vệ khoá API một cách cẩn thận (ví dụ: bằng cách sử dụng dịch vụ kho lưu trữ hoặc đặt khoá làm biến môi trường); tuy nhiên, bạn có thể đưa khoá API cho các dịch vụ của Firebase vào mã hoặc tệp cấu hình đã kiểm tra.
Bạn có thể xem và quản lý tất cả khoá API của dự án trong bảng điều khiển API và Dịch vụ > Thông tin xác thực trong bảng điều khiển Google Cloud.
Bạn cũng có thể tìm thấy khoá API được tự động so khớp với một Ứng dụng Firebase ở những nơi sau đây. Theo mặc định, tất cả Ứng dụng Firebase của dự án cho cùng một nền tảng (Apple so với Android so với Web) sẽ sử dụng cùng một khoá API.
Ứng dụng Firebase dành cho Apple – Tìm khoá API được so khớp tự động trong tệp cấu hình Firebase, GoogleService-Info.plist, trong trường API_KEY.
Ứng dụng Android Firebase – Tìm khoá API được so khớp tự động trong tệp cấu hình Firebase, google-services.json, trong trường current_key.
Ứng dụng web Firebase – Tìm khoá API được so khớp tự động trong đối tượng Firebaseconfig, trong trường apiKey.
Sử dụng khoá API
Khoá API được dùng để xác định dự án Firebase của bạn khi tương tác với các dịch vụ của Firebase/Google. Cụ thể, các khoá này được dùng để liên kết các yêu cầu API với dự án của bạn cho hạn mức và việc thanh toán. Chúng cũng hữu ích khi truy cập vào dữ liệu công khai.
Ví dụ: bạn có thể sử dụng khoá API một cách rõ ràng bằng cách truyền giá trị của khoá đó vào lệnh gọi REST API dưới dạng tham số truy vấn. Ví dụ này cho thấy cách bạn có thể đưa ra yêu cầu đối với API rút gọn đường liên kết Dynamic Links:
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Khi ứng dụng của bạn gọi một API Firebase yêu cầu khoá API do ứng dụng di động/máy khách web cung cấp, ứng dụng của bạn sẽ tự động tìm khoá API của dự án trong tệp/đối tượng cấu hình Firebase. Tuy nhiên, bạn có thể cung cấp khoá API cho ứng dụng của mình bằng một cơ chế khác, bao gồm cả các biến môi trường.
Xem xét và áp dụng các quy tắc hạn chế phù hợp cho khoá API (nên dùng)
Mặc dù không cần coi khoá API cho các dịch vụ Firebase là một bí mật, nhưng bạn nên xem xét và áp dụng các quy định hạn chế và giới hạn như mô tả trong phần này.
Xem xét các API được tự động thêm vào danh sách cho phép đối với khoá API Firebase
Khi Firebase tạo khoá API trong dự án của bạn, chúng tôi sẽ tự động thêm "các hạn chế về API" vào khoá đó. Các API được thêm vào danh sách cho phép này là những API liên quan đến Firebase. Các API này yêu cầu ứng dụng cung cấp khoá API cùng với lệnh gọi. Xin lưu ý rằng hầu hết các API cần thiết để sử dụng các dịch vụ của Firebase không thực sự cần phải có trong danh sách cho phép đối với khoá API của bạn.
Vì Firebase thêm các API cần thiết cho tất cả các dịch vụ Firebase, nên danh sách cho phép đối với một khoá API có thể bao gồm các API cho những sản phẩm mà bạn không sử dụng.
Bạn có thể xoá các API khỏi danh sách cho phép, nhưng bạn phải rất cẩn thận để không xoá các API cần thiết cho Firebase và các dịch vụ Firebase mà bạn sử dụng (xem danh sách các API liên quan đến Firebase cần có trong danh sách cho phép cho từng dịch vụ / sản phẩm). Nếu không, bạn sẽ gặp lỗi khi gọi các dịch vụ của Firebase.
Tăng hạn mức nếu bạn sử dụng Authentication dựa trên mật khẩu
.
Nếu bạn sử dụng Firebase Authentication dựa trên mật khẩu và ai đó có được khoá API của bạn, thì họ sẽ không thể truy cập vào bất kỳ cơ sở dữ liệu hoặc dữ liệu Cloud Storage nào trong dự án Firebase của bạn miễn là dữ liệu này được bảo vệ bằng Firebase Security Rules. Tuy nhiên, họ có thể dùng khoá API của bạn để truy cập vào các điểm cuối xác thực của Firebase và đưa ra các yêu cầu xác thực đối với dự án của bạn.
Để giảm thiểu khả năng có người có thể sử dụng sai khoá API để cố gắng thực hiện một cuộc tấn công dò tìm, bạn có thể thắt chặt hạn mức mặc định của các điểm cuối identitytoolkit.googleapis.com để phản ánh kỳ vọng về lưu lượng truy cập thông thường của ứng dụng. Xin lưu ý rằng nếu bạn thắt chặt hạn mức này và ứng dụng của bạn đột nhiên có thêm người dùng, thì bạn có thể gặp lỗi đăng nhập cho đến khi tăng hạn mức.
Bạn có thể thay đổi hạn mức API của dự án trong bảng điều khiển Google Cloud.
Sử dụng các khoá API riêng biệt, bị hạn chế cho mọi dịch vụ không phải Firebase
Mặc dù khoá API dùng cho các dịch vụ Firebase thường không cần được coi là bí mật, nhưng bạn nên thực hiện một số biện pháp phòng ngừa bổ sung đối với khoá API mà bạn dùng với các API Google Cloud khác.
Nếu bạn sử dụng một API Google Cloud (trên bất kỳ nền tảng nào) không dành cho một dịch vụ / sản phẩm của Firebase, bạn nên tạo các khoá API riêng biệt, có hạn chế để sử dụng với những API đó. Điều này đặc biệt quan trọng nếu API dành cho một dịch vụ Google Cloud có tính phí.
Ví dụ: nếu sử dụng Firebase ML và Cloud Vision API trên iOS, bạn nên tạo các khoá API riêng biệt mà bạn chỉ dùng để truy cập vào Cloud Vision API.
Bằng cách sử dụng các khoá API riêng biệt và có hạn chế cho các API không phải Firebase, bạn có thể xoay vòng hoặc thay thế các khoá khi cần thiết và thêm các quy tắc hạn chế khác cho các khoá API mà không làm gián đoạn việc sử dụng các dịch vụ Firebase.
Xem hướng dẫn tạo khoá dành riêng cho API
Các hướng dẫn này mô tả cách tạo một khoá API riêng biệt, bị hạn chế cho một API giả có tên là Super Service API.
Bước 1: Định cấu hình các khoá API hiện có để không cho phép truy cập vào Super Service API
Mở trang Thông tin đăng nhập của bảng điều khiển Google Cloud. Khi được nhắc, hãy chọn dự án của bạn.
Đối với mỗi khoá API hiện có trong danh sách, hãy mở chế độ chỉnh sửa.
Trong phần API restrictions (Hạn chế cho API), hãy chọn Restrict key (Hạn chế cho khoá), sau đó thêm tất cả API mà bạn muốn khoá API có quyền truy cập vào danh sách. Đảm bảo bạn không thêm API mà bạn đang tạo khoá API riêng (trong ví dụ này là Super Service API).
Khi định cấu hình các quy tắc hạn chế đối với API của một khoá API, bạn đang khai báo rõ ràng những API mà khoá đó có quyền truy cập. Theo mặc định, khi bạn chọn Don't restrict key (Không hạn chế khoá) trong mục API restrictions (Hạn chế cho API), khoá API có thể được dùng để truy cập vào mọi API được bật cho dự án.
Giờ đây, các khoá API hiện có của bạn sẽ không cấp quyền truy cập vào Super Service API, nhưng mỗi khoá sẽ tiếp tục hoạt động cho mọi API mà bạn đã thêm vào danh sách các quy tắc hạn chế đối với API.
Bước 2: Tạo và sử dụng khoá API mới để truy cập vào Super Service API
Nhấp vào Tạo thông tin xác thực > Khoá API. Ghi lại khoá API mới, sau đó nhấp vào Restrict key (Hạn chế cho khoá).
Trong mục API restrictions (Hạn chế cho API), hãy chọn Restrict key (Hạn chế cho khoá), sau đó chỉ thêm Super Service API vào danh sách.
Khoá API mới này chỉ cấp quyền truy cập vào Super Service API.
Định cấu hình ứng dụng và dịch vụ để sử dụng khoá API mới.
Sử dụng khoá API dành riêng cho môi trường (nên dùng)
Nếu thiết lập các dự án Firebase khác nhau cho các môi trường khác nhau (chẳng hạn như môi trường thử nghiệm và môi trường phát hành công khai), thì điều quan trọng là mỗi phiên bản ứng dụng phải tương tác với dự án Firebase tương ứng. Ví dụ: phiên bản ứng dụng dàn dựng của bạn không bao giờ được tương tác với dự án Firebase phát hành công khai. Điều này cũng có nghĩa là ứng dụng dàn dựng của bạn cần sử dụng khoá API được liên kết với dự án dàn dựng Firebase.
Để giảm các vấn đề khi chuyển đổi mã từ giai đoạn phát triển sang giai đoạn dàn dựng rồi đến giai đoạn sản xuất, thay vì đưa khoá API vào chính mã, hãy đặt khoá API làm biến môi trường hoặc đưa khoá API vào một tệp cấu hình.
Xin lưu ý rằng nếu đang sử dụng Firebase Local Emulator Suite để phát triển cùng với Firebase ML, bạn phải tạo và sử dụng khoá API chỉ dành cho gỡ lỗi. Hướng dẫn tạo loại khoá đó có trong tài liệu Firebase ML.
Câu hỏi thường gặp và cách khắc phục sự cố
Câu hỏi thường gặp
Theo mặc định, các khoá API cho dịch vụ Firebase có bị hạn chế không?
Có. Theo mặc định, tất cả các khoá API mà Firebase tự động cung cấp để sử dụng với các API liên quan đến Firebase đều tự động áp dụng "Giới hạn API". Xem danh sách các API liên quan đến Firebase có trong danh sách cho phép này.
Các API được thêm vào danh sách cho phép này là những API do các dịch vụ Firebase gọi từ mã ứng dụng và yêu cầu khoá API để xác định dự án hoặc ứng dụng Firebase của bạn. Xin lưu ý rằng hầu hết các API cần thiết để sử dụng các dịch vụ Firebase thực sự không cần phải có trong danh sách cho phép đối với khoá API của bạn.
Vì Firebase thêm các API cần thiết cho tất cả các dịch vụ Firebase, nên danh sách cho phép đối với một khoá API có thể bao gồm các API cho những sản phẩm mà bạn không sử dụng. Bạn có thể xoá các API khỏi danh sách cho phép, nhưng bạn phải rất cẩn thận để không xoá các API cần thiết cho Firebase và các dịch vụ Firebase mà bạn sử dụng (xem danh sách các API liên quan đến Firebase cần có trong danh sách cho phép đối với từng dịch vụ / sản phẩm). Nếu không, bạn sẽ gặp lỗi khi gọi các dịch vụ của Firebase.
Bạn có thể xem tất cả khoá API và "các hạn chế về API" trong bảng điều khiển API và Dịch vụ > Thông tin xác thực trong bảng điều khiển Google Cloud.
Lưu ý những điều sau về cách Firebase áp dụng các "hạn chế về API" này:
Trong tháng 5 năm 2024, tất cả các khoá API hiện có và không bị hạn chế mà Firebase đã tự động cung cấp trước đó đều bị hạn chế đối với danh sách các API liên quan đến Firebasecộng với bất kỳ API nào hiện được bật của dự án.
Mọi khoá API hiện có và đã bị hạn chế mà Firebase đã tự động cấp trước đó đều không thay đổi.
Mọi khoá API hiện có không được Firebase tự động cấp phép đều không thay đổi.
Làm cách nào để xác định khoá API nào được liên kết với Ứng dụng Firebase của tôi?
Bạn có thể sử dụng bất kỳ lựa chọn nào sau đây để xác định khoá API nào được liên kết với Ứng dụng Firebase của bạn:
Firebase bảng điều khiển
Chuyển đến settingsCài đặt dự án, sau đó di chuyển xuống thẻ Ứng dụng của bạn.
Chọn ứng dụng bạn muốn.
Lấy tệp/đối tượng cấu hình Firebase cho ứng dụng mà bạn quan tâm, sau đó tìm khoá API của ứng dụng đó:
Apple: Tải GoogleService-Info.plist xuống, sau đó tìm trường API_KEY
Android: Tải google-services.json xuống, tìm cấu hình cho ứng dụng bạn quan tâm (tìm tên gói của ứng dụng đó), rồi tìm trường current_key
Web: Chọn mục Config (Cấu hình), sau đó tìm trường apiKey
Firebase CLI
Lấy tệp/đối tượng cấu hình Firebase cho ứng dụng mà bạn quan tâm bằng cách chạy lệnh sau:
firebase apps:sdkconfig PLATFORMFIREBASE_APP_ID
PLATFORM (một trong số): IOS | ANDROID | WEB
FIREBASE_APP_ID: giá trị nhận dạng duy nhất do Firebase chỉ định cho Ứng dụng Firebase của bạn (tìm Mã ứng dụng của bạn)
Trong cấu hình Firebase được in của ứng dụng, hãy tìm khoá API của ứng dụng:
Apple: Tìm trường API_KEY
Android: Tìm cấu hình cho ứng dụng bạn quan tâm (tìm tên gói của ứng dụng đó), rồi tìm trường current_key
Web: Tìm trường apiKey
API REST
Lấy apiKeyId (UID) của khoá API bằng cách gọi điểm cuối có thể áp dụng cho ứng dụng mà bạn quan tâm, sau đó truyền giá trị apiKeyId đến bước tiếp theo.
keyString này là giá trị tương tự mà bạn có thể tìm thấy trong cấu phần phần mềm cấu hình của Ứng dụng (Apple | Android | Web).
Tôi có thể có 2 khoá API được liệt kê cho cùng một Ứng dụng Firebase trong tệp/đối tượng cấu hình Firebase của mình không?
Ứng dụng Firebase Apple – Mỗi ứng dụng có một tệp cấu hình riêng và chỉ có thể có một khoá API được liệt kê.
Ứng dụng Firebase dành cho Android – Tất cả ứng dụng Android trong dự án Firebase đều được liệt kê trong cùng một tệp cấu hình và mỗi ứng dụng chỉ có thể có một khoá API được liệt kê. Tuy nhiên, mỗi ứng dụng trong tệp cấu hình này có thể có một khoá riêng.
Ứng dụng web Firebase – Mỗi ứng dụng có một đối tượng cấu hình riêng và chỉ có thể có một khoá API được liệt kê.
Tuy nhiên, bạn có thể sử dụng nhiều khoá API với một ứng dụng. Bạn phải cung cấp một cơ chế để ứng dụng của bạn truy cập vào các khoá API khác này, chẳng hạn như thông qua một biến môi trường. Cơ chế truy cập vào các khoá API khác không thể phụ thuộc vào việc các khoá API đó được liệt kê trong tệp/đối tượng cấu hình Firebase của bạn.
Làm cách nào để Firebase biết khoá API nào cần so khớp với một ứng dụng (như trong tệp/đối tượng cấu hình Firebase)?
Nếu Firebase không tìm thấy khoá bị hạn chế nào phù hợp, thì Firebase sẽ liệt kê trong tệp/đối tượng cấu hình iOS key cho ứng dụng Apple, Android key cho ứng dụng Android và Browser key cho ứng dụng web (giả sử các khoá này tồn tại và không có "Hạn chế ứng dụng" nào khiến chúng không khớp với ứng dụng đó).
Tôi có thể xoá khoá API và trường theo cách thủ công khỏi tệp/đối tượng cấu hình Firebase của mình không?
Có, bạn có thể xoá khoá API khỏi tệp/đối tượng cấu hình theo cách thủ công. Tuy nhiên, bạn phải cung cấp một cơ chế khác để ứng dụng của bạn truy cập vào khoá API (chẳng hạn như thông qua một biến môi trường). Nếu không, mọi lệnh gọi đến các dịch vụ Firebase sẽ không thành công.
Tôi có thể chỉnh sửa tệp/đối tượng cấu hình Firebase theo cách thủ công bằng các khoá API khác nhau không?
Có, bạn có thể chỉnh sửa tệp/đối tượng cấu hình theo cách thủ công để liên kết một khoá API khác với một ứng dụng.
Tôi có thể di chuyển khoá API từ dự án Firebase này sang dự án Firebase khác không?
Không, khoá API chỉ xác định một dự án cụ thể và không thể di chuyển sang một dự án khác.
Điều gì sẽ xảy ra nếu tôi xoá một khoá API có trong bảng điều khiển Google Cloud?
Nếu bạn xoá một khoá API mà một ứng dụng đang sử dụng, thì các lệnh gọi API từ ứng dụng đó sẽ không thành công. Bạn có thể nhận được báo cáo, email hoặc lỗi cho biết bạn đang cố gắng sử dụng một khoá API không hợp lệ.
Thao tác xoá khoá API có hiệu lực vĩnh viễn và không huỷ được sau khi thực hiện.
Những API nào bắt buộc phải có trong danh sách cho phép "API restrictions" (Hạn chế cho API) đối với khoá API Firebase?
Đối với khoá API Firebase, các API duy nhất cần có trong danh sách cho phép "hạn chế API" của khoá là những API yêu cầu ứng dụng cung cấp khoá API cùng với lệnh gọi. Xin lưu ý rằng rất ít API liên quan đến Firebase có yêu cầu này. Hầu hết các API liên quan đến Firebase được bật trong dự án của bạn không cần phải nằm trong danh sách cho phép "Hạn chế API" của khoá.
Hãy sử dụng bảng sau để xác định những API liên quan đến Firebase cần được đưa vào danh sách cho phép "Quy tắc hạn chế về API" cho một khoá API Firebase. Xin lưu ý rằng bạn chỉ nên dùng khoá API Firebase cho các dịch vụ Firebase. Tìm hiểu thêm về cách tạo các khoá API riêng biệt, bị hạn chế cho các loại API cụ thể.
* Chỉ bắt buộc nếu bạn đang sử dụng khoá API Firebase với các công cụ bên thứ ba hoặc quyền truy cập REST trực tiếp vào dịch vụ / sản phẩm Firebase.
** Bắt buộc đối với các phiên bản SDK cũ hơn của sản phẩm. Nếu bạn đang sử dụng phiên bản SDK mới nhất, thì API không cần phải có trong danh sách cho phép của khoá.
Khắc phục sự cố
Làm cách nào để khắc phục lỗi API_KEY_SERVICE_BLOCKED hoặc lỗi Bị cấm 403 cho biết các yêu cầu đến API này bị chặn?
Hãy làm theo hướng dẫn trong phần Câu hỏi thường gặp này nếu bạn gặp lỗi API_KEY_SERVICE_BLOCKED hoặc một lỗi tương tự như sau:
Forbidden: 403 POST https://example-service.googleapis.com/method: Requests to this API example-service.googleapis.com method google.example-service.rest.method are blocked.
Khoá API mà ứng dụng của bạn dùng để gọi API có thể đã áp dụng "Hạn chế API" và danh sách cho phép của khoá không bao gồm API đó.
Nếu gặp lỗi này khi cố gắng sử dụng một dịch vụ không phải của Firebase, thì bạn nên tạo một khoá API mới dành riêng cho dịch vụ và API đó. Bạn chỉ nên dùng khoá API Firebase cho các dịch vụ / sản phẩm của Firebase.
Tìm hiểu thêm về cách tạo các khoá API riêng biệt, có hạn chế cho các loại API cụ thể.
Làm cách nào để khắc phục lỗi này? "Không tìm nạp được mã nhận dạng đo lường của ứng dụng Firebase này từ máy chủ."
Khoá API mà ứng dụng web của bạn sử dụng có thể đã được áp dụng "Quy tắc hạn chế về API". Nếu đúng như vậy, hãy đảm bảo rằng Firebase Management API có trong danh sách API được phép.
Tôi nhận được email hoặc lỗi cho biết khoá API của tôi không hợp lệ. Điều gì đã xảy ra và làm cách nào để khắc phục vấn đề này?
Sau đây là một số nguyên nhân phổ biến nhất dẫn đến khoá API không hợp lệ:
Khoá API có "API Key Restrictions" (Các quy tắc hạn chế về khoá API) được áp dụng, khiến khoá này không khớp với ứng dụng đang cố gắng sử dụng khoá ("Application Restrictions" – Các quy tắc hạn chế về ứng dụng) hoặc không dùng được cho API đang được gọi ("API Restrictions" – Các quy tắc hạn chế về API).
Khoá API đã bị xoá khỏi dự án trong bảng điều khiển Google Cloud.
Khoá API chưa được tạo cho Mã dự án có trong tệp/đối tượng cấu hình Firebase của ứng dụng.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-09-06 UTC."],[],[],null,[]]