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 Firebase
dự án khi tương tác với Firebase và các dịch vụ của 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 bằng ứ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 khoá API thường được sử dụng, khoá API cho các dịch vụ của Firebase
không dùng để kiểm soát quyền truy cập vào các tài nguyên phụ trợ; chỉ có thể làm được
với 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 những ứng dụng có thể truy cập vào tài nguyên).
Thông thường, bạn cần bảo vệ nhanh chóng các khoá API (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ể thêm khoá API cho các dịch vụ Firebase vào mã hoặc cấu hình đã xác nhận an toàn
tệp.
Bạn cũng có thể tìm thấy khoá API nào được tự động so khớp với
Firebase App ở các vị trí sau. 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 và Web) sẽ sử dụng cùng một khoá API.
Ứng dụng Apple của Firebase — Tìm khoá API được tự động so khớp trong Firebase
tệp cấu hình, GoogleService-Info.plist, trong
Trường API_KEY.
Ứng dụng Android của Firebase — Tìm khoá API được tự động so khớp trong
Tệp cấu hình Firebase, google-services.json, trong
Trường current_key.
Ứng dụng web của Firebase — Tìm khoá API được tự động so khớp trong Firebase
config, 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
Firebase/các dịch vụ của Google. Cụ thể, chúng được dùng để liên kết các yêu cầu API
với dự án của bạn về hạn mức và 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 chuyển giá trị của khoá đó vào một REST
Lệnh gọi 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
vào
API rút ngắ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 thực hiện lệnh gọi đến Firebase API và yêu cầu phải cung cấp khoá API
bằng ứng dụng web dành cho thiết bị di động/web, ứng dụng của bạn sẽ tự động tìm trong
Tệp/đối tượng cấu hình Firebase cho khoá API của dự án. Tuy nhiên, bạn có thể
cung cấp khoá API cho ứng dụng bằng một cơ chế khác, bao gồm cả môi trường
biến.
Xem xét và áp dụng các quy định hạn chế thích hợp đối với khoá API (nên dùng)
Mặc dù không cần thiết phải coi khoá API cho các dịch vụ Firebase là
bí mật, bạn nên xem xét và áp dụng các quy định hạn chế cũng như giới hạn như được mô tả trong
.
Xem xét những API được tự động thêm vào danh sách cho phép cho khoá API Firebase của bạn
Khi Firebase tạo khoá API trong dự án của bạn, chúng tôi sẽ tự động thêm
"Hạn chế về API"
cho khoá đó. API được thêm vào danh sách cho phép này là các API liên quan đến Firebase
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
Để sử dụng các dịch vụ của Firebase, bạn không cần phải ở trên
danh sách cho phép cho các khoá API của bạn.
Vì Firebase thêm các API cần thiết cho tất cả dịch vụ Firebase, nên
danh sách cho phép của khoá API có thể bao gồm API của các sản phẩm mà bạn không sử dụng.
Bạn có thể loại bỏ API khỏi danh sách cho phép, nhưng phải cẩn thận để không
xoá các API cần thiết cho Firebase và 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 của từng dịch vụ / sản phẩm). Nếu không, bạn
sẽ gặp lỗi khi thực hiện lệnh gọi đến dịch vụ Firebase.
Siết chặt 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à có người lấy được API của bạn
khoá, thì họ sẽ không thể truy cập vào bất kỳ cơ sở dữ liệu nào của dự án Firebase
hoặc Cloud Storagemiễn là dữ liệu này được bảo vệ bằng
Firebase Security Rules. Tuy nhiên, họ có thể sử dụng khoá API của bạn để truy cập
Điểm cuối xác thực của Firebase và đưa ra yêu cầu xác thực dựa trên
dự án của bạn.
Để giảm thiểu khả năng một người nào đó có thể sử dụng khoá API sai mục đích để
nếu bạn thực hiện một cuộc tấn công brute force, bạn có thể thắt chặt hạn mức mặc định của
identitytoolkit.googleapis.com điểm cuối để phản ánh lưu lượng truy cập bình thường
kỳ vọ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
bất ngờ có được người dùng, bạn có thể gặp lỗi đăng nhập cho đến khi bạn 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 và bị hạn chế cho mọi dịch vụ không phải của Firebase
Mặc dù bạn thường không cần phải xử lý các khoá API dùng cho các dịch vụ của Firebase
là bí mật, bạn nên thực hiện thêm một số biện pháp phòng ngừa với khoá API mà bạn sử dụng
với các API Google Cloud khác.
Trường hợp bạn sử dụng API Google Cloud (trên bất kỳ nền tảng nào) không dành cho Firebase
dịch vụ / sản phẩm, bạn nên tạo các khoá API riêng biệt và bị hạn chế
để sử dụng với các API đó. Điều này đặc biệt quan trọng nếu API dành cho
dịch vụ Google Cloud có thể tính phí.
Ví dụ: nếu sử dụng Firebase ML và API Cloud Vision trên iOS, bạn
nên tạo các khoá API riêng mà bạn chỉ sử dụng
để truy cập Cloud Vision API.
Bằng cách sử dụng các khoá API riêng biệt và bị hạn chế cho các API không phải Firebase, bạn có thể xoay vòng hoặc
thay thế khoá khi cần và thêm các quy tắc hạn chế bổ sung vào API
khoá
mà không làm gián đoạn việc bạn sử dụng dịch vụ Firebase.
Xem hướng dẫn tạo khoá dành riêng cho API
Những hướng dẫn này mô tả cách tạo khoá API riêng biệt và bị hạn chế cho
API giả có tên là Super Service API.
Bước 1: Định cấu hình khoá API hiện có để không cho phép truy cập vào Super Service API
Mở phần Thông tin xác thực
trang 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ế độ xem chỉnh sửa.
Trong phần API Restrictions (Hạn chế về API), hãy chọn Restrict key (Hạn chế khoá), sau đó thêm vào
liệt kê tất cả API mà bạn muốn khoá API có quyền truy cập. Đảm bảo
để không thêm API mà bạn sẽ tạo khoá API riêng
(trong ví dụ này là Super Service API).
Khi định cấu hình các hạn chế API của khoá API, bạn được nêu rõ ràng
khai báo các API mà khoá có quyền truy cập. Theo mặc định, khi
Phần Các hạn chế về API có tuỳ chọn Không hạn chế khoá được chọn, một khoá API
có thể dùng để truy cập vào bất kỳ API nào đượ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 đối với mọi API mà bạn đã thêm vào
Danh sách các hạn chế về API.
Bước 2: Tạo và sử dụng khoá API mới để truy cập vào Super Service API
Quay lại phần Thông tin xác thực
. Hãy đảm bảo dự án Firebase của bạn vẫn đang được chọn.
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 Hạn chế khoá.
Trong phần API Restrictions (Hạn chế về API), hãy chọn Restrict key (Hạn chế khoá), sau đó thêm vào
chỉ liệt kê Super Service API.
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à các dịch vụ của bạn để 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 bạn 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ư
thử nghiệm và chính thức, đ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 thử nghiệm của bạn phải
không bao giờ thảo luận với dự án Firebase chính thức của bạn. Điều này cũng có nghĩa là
ứng dụng thử nghiệm cần sử dụng các khoá API được liên kết với dự án Firebase thử nghiệm của bạn.
Để giảm sự cố khi xúc tiến thay đổi mã từ phát triển sang thử nghiệm
sản xuất, thay vì đưa khoá API vào chính mã, hãy đặt chúng thành
biến môi trường hoặc đưa chúng vào một tệp cấu hình.
Xin lưu ý rằng nếu bạn đ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ỉ gỡ lỗi. Chỉ dẫn
để tạo loại khoá đó, bạn có thể tìm thấy loại khoá đó trong
Tài liệu về 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
Là khoá API
cho các dịch vụ Firebase bị hạn chế theo mặc định không?
Các API được thêm vào danh sách cho phép này là những API được các dịch vụ Firebase gọi từ
mã ứng dụng khách và yêu cầu khoá API để nhận dạng dự án Firebase hoặc
. Lưu ý rằng hầu hết API cần thiết để sử dụng các dịch vụ Firebase thường không thực sự
cần có tên trong danh sách cho phép cho các khoá API của bạn.
Vì Firebase thêm các API cần thiết cho tất cả dịch vụ Firebase, nên
danh sách cho phép của khoá API có thể bao gồm API của các sản phẩm mà bạn không sử dụng. Bạn
có thể xoá API khỏi danh sách cho phép, nhưng bạn phải cẩn thận để không xoá
các API bắt buộc cho Firebase và 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 của từng dịch vụ / sản phẩm). Nếu không, bạn
sẽ gặp lỗi khi thực hiện lệnh gọi đến dịch vụ Firebase.
Bạn có thể xem tất cả các khoá API và "Các hạn chế về API" của các khoá đó trong
API & Dịch vụ > Thông tin đăng nhập
trong bảng điều khiển Google Cloud.
Xin lưu ý những điều sau đây về cách Firebase áp dụng "các quy tắc hạn chế về API" này:
Trong tháng 5 năm 2024, tất cả khoá API hiện có và không bị giới hạn mà Firebase có
được tự động cấp phép trước đó bị hạn chế đối với
danh sách các API liên quan đến Firebasecùng bất kỳ API hiện được bật nào của dự án.
Mọi khoá API hiện có và đã bị hạn chế mà Firebase đã sử dụng trước đây
được tự động cấp phép 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
có liên kết với ứng dụng Firebase của tôi không?
Bạn có thể dùng bất kỳ cách 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:
Bảng điều khiển Firebase
Chuyển đến settingsCài đặt dự án,
sau đó cuộn xuống thẻ Ứng dụng của bạn.
Chọn ứng dụng bạn quan tâm.
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 trình duyệt đó:
Apple: Tải GoogleService-Info.plist xuống rồi 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), sau đó tìm
Trường current_key
Web: Chọn mục 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 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 riêng biệt do Firebase chỉ định cho
Ứng dụng Firebase (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 của ứng dụng bạn quan tâm (tìm cấu hình
package name (tên gói)), sau đó 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 hàm
điểm cuối hiện hành cho ứng dụng quan tâm, sau đó truyền
apiKeyId để chuyển sang bước tiếp theo.
keyString này là cùng một giá trị có thể được tìm thấy trong
cấu phần phần mềm cấu hình
(Táo |
Android |
Web).
Tôi có thể
có hai khóa API được liệt kê cho cùng một ứng dụng Firebase trong cấu hình Firebase của tôi
tệp/đối tượng?
Ứng dụng Apple của Firebase — Mỗi ứng dụng có tệp cấu hình riêng và chỉ có thể có
một khoá API được liệt kê.
Ứng dụng Android của Firebase – 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
trong danh sách. Mỗi ứng dụng trong tệp cấu hình này có thể có một khoá khác nhau được liệt kê,
như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
cơ chế để ứng dụng của bạn truy cập vào những khoá API khác này, chẳng hạn như thông qua một môi trường
biến. Cơ chế truy cập vào các khoá API khác không thể phụ thuộc vào các khoá đó
Khoá API được liệt kê trong tệp/đối tượng cấu hình Firebase của bạn.
Firebase hoạt động như thế nào
biết khoá API nào sẽ khớp với một ứng dụng (như trong cấu hình Firebase
tệp/đối tượng) không?
Nếu không tìm thấy khoá bị hạn chế nào phù hợp, Firebase sẽ liệt kê trong
tệp cấu hình/đối tượng iOS key cho các ứng dụng của Apple, Android key cho
Ứng dụng Android và Browser key cho các ứng dụng web (giả sử các khoá này tồn tại
và không có "Hạn chế về ứng dụng" khiến chúng không khớp với
).
Tôi có thể làm theo cách thủ công không
xóa trường và khóa API khỏi tệp/đối tượng cấu hình Firebase của tôi?
Có, bạn có thể xoá khoá API theo cách thủ công khỏi tệp/đối tượng cấu hình của mình. Tuy nhiên,
bạn phải cung cấp một số cơ chế khác để ứng dụng truy cập vào khoá API
(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ể làm theo cách thủ công không
chỉnh sửa tệp/đối tượng cấu hình Firebase của tôi bằng các khoá API khác nhau?
Có, bạn có thể chỉnh sửa thủ công tệp/đối tượng cấu hình để liên kết một khoá API khác
bằng một ứng dụng.
Tôi có thể di chuyển một
Khoá API khi chuyển từ dự án Firebase này sang dự án khác?
Không, khoá API chỉ xác định một dự án cụ thể và không thể chuyển sang một dự án khác
dự án.
Điều gì sẽ xảy ra nếu tôi
xoá khoá API được liệt kê trong bảng điều khiển Google Cloud?
Nếu bạn xoá khoá API mà một ứng dụng đang 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 mà bạn đang cố gắng sử dụng
khoá API không hợp lệ.
Khoá API sẽ bị xoá vĩnh viễn và không huỷ được sau khi thực hiện.
Mục nào
Yêu cầu API trong phần "Hạn chế về API" danh sách cho phép dùng khoá API Firebase?
Đối với khoá API Firebase, bạn chỉ cần đặt các API trên
"Hạn chế về API" danh sách cho phép là các API yêu cầu ứng dụng cung cấp
Khoá API cùng với lệnh gọi. Lưu ý rằng rất ít API liên quan đến Firebase có tính năng này
. Dự án của bạn không cần phải có hầu hết các API liên quan đến Firebase được bật
về "Hạn chế API" của khoá danh sách cho phép.
Sử dụng bảng sau đây để xác định những API liên quan đến Firebase
có trong phần "Hạn chế về API" danh sách cho phép dùng khoá API Firebase. Hãy nhớ rằng
Bạn chỉ nên sử dụng khoá API Firebase cho các dịch vụ của Firebase. Tìm hiểu thêm về
đang tạo
khoá API riêng biệt, bị hạn chế cho các loại API cụ thể.
Cloud Messaging, Crashlytics, In-App MessagingPerformance Monitoring, Remote Config, Firebase ML
firebaseappcheck.googleapis.com
API Kiểm tra ứng dụng Firebase
App Check
firebaseappdistribution.googleapis.com
API Phân phối ứng dụng Firebase
App Distribution
firebaseapptesters.googleapis.com
API Người kiểm thử ứng dụng Firebase
App Distribution
identitytoolkit.googleapis.com
API Bộ công cụ nhận dạng
Authentication
securetoken.googleapis.com
API dịch vụ mã thông báo
Authentication
firebaserules.googleapis.com *
API quy tắc Firebase
Cloud Firestore, Cloud Storage, Realtime Database
datastore.googleapis.com
API Cloud Datastore
Cloud Firestore
firestore.googleapis.com
API Google Cloud Firestore
Cloud Firestore
fcmregistrations.googleapis.com
API đăng ký FCM
Cloud Messaging
firebasestorage.googleapis.com
Cloud Storage cho Firebase API
Cloud Storage
firebasedynamiclinks.googleapis.com
API liên kết động của Firebase
Dynamic Links
firebasehosting.googleapis.com *
API Lưu trữ Firebase
Hosting
firebaseinappmessaging.googleapis.com
API gửi thông báo trong ứng dụng của Firebase
In-App Messaging
firebaseml.googleapis.com
API Firebase ML
Firebase ML, Vertex AI in Firebase
mlkit.googleapis.com **
API Bộ công cụ học máy
Firebase ML
mobilecrashreporting.googleapis.com
Mobile Crash Reporting API
Performance Monitoring
play.googleapis.com
Google Play Android Developer API
Performance Monitoring
firebaseremoteconfig.googleapis.com
API Cấu hình từ xa Firebase
Performance Monitoring, Remote Config
firebaseremoteconfigrealtime.googleapis.com
API thời gian thực Cấu hình từ xa Firebase
Performance Monitoring, Remote Config
Cloudconfig.googleapis.com **
Không áp dụng
Remote Config
firebasedatabase.googleapis.com *
API cơ sở dữ liệu theo thời gian thực của Firebase
Realtime Database
* Chỉ bắt buộc nếu bạn đang sử dụng khoá API Firebase với bên thứ ba
hoặc quyền truy cập trực tiếp từ Kiến trúc chuyển trạng thái đại diện (REST) 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ũ của sản phẩm. Nếu bạn đang sử dụng
phiên bản SDK mới nhất, API không cần phải nằm trên khoá
danh sách cho phép.
Khắc phục sự cố
Làm thế nào để
khắc phục lỗi API_KEY_SERVICE_BLOCKED hoặc lỗi
Cấm 403 có nội dung
các yêu cầu đến API này có bị chặn không?
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 nhận được API_KEY_SERVICE_BLOCKED
hoặc lỗi giống 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ể có
"Các quy định hạn chế về API"
đã áp dụng cho khoá đó, đồng thời danh sách cho phép của khoá không bao gồm API đó.
Nếu bạn gặp lỗi này khi cố gắng sử dụng một dịch vụ không phải Firebase, hãy
bạn nên tạo khoá API mới dành riêng cho dịch vụ đó và
API. Bạn chỉ nên sử 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ề việc tạo
khoá API riêng biệt, bị hạn chế cho các loại API cụ thể.
Làm thế nào để
sửa lỗi này? "Không tìm nạp được mã đ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ó
"Các quy định hạn chế về API"
được áp dụng cho nội dung đó. Nếu đúng như vậy, hãy đảm bảo rằng API Quản lý Firebase
nằm trong danh sách API được phép.
Tôi nhận được email hoặc lỗi
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?
Dưới đây là một số nguyên nhân phổ biến nhất gây ra lỗi API không hợp lệ:
Khoá API có
"Các hạn chế về khoá API"
đã áp dụng cho khoá đó, khiến không thể khớp với ứng dụng cố gắng dùng khoá
("Hạn chế của ứng dụng") hoặc không sử dụng được cho API được gọi ("API
Quy định hạn chế").
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 liệt kê trong
Đối tượng/tệp cấu hình Firebase.
Có một cách để khắc phục vấn đề này là lấy phiên bản cập nhật của ứng dụng
Tệp/đối tượng cấu hình Firebase,
sau đó, hãy thay thế tệp/đối tượng cấu hình cũ bằng tệp/đối tượng mới cập nhật.
Trước khi gửi tệp cấu hình để tải xuống hoặc hiển thị đối tượng cấu hình trong
bảng điều khiển, Firebase sẽ kiểm tra để đảm bảo rằng(các) khoá API được liệt kê
với(các) ứng dụng.