Nếu ứng dụng Android của bạn sử dụng một trong các API đám mây của Firebase ML, trước khi khởi chạy ứng dụng của mình trong sản xuất, bạn nên thực hiện một số bước bổ sung để ngăn truy cập API trái phép.
Đối với các ứng dụng sản xuất của mình, bạn sẽ đảm bảo rằng chỉ những máy khách đã được xác thực mới có thể truy cập các dịch vụ đám mây. (Lưu ý rằng chỉ những thiết bị chưa root mới có thể xác thực bằng phương pháp được mô tả.)
Sau đó, bạn sẽ tạo khóa API chỉ gỡ lỗi mà bạn có thể sử dụng để thuận tiện trong quá trình thử nghiệm và phát triển.
1. Đăng ký ứng dụng sản xuất của bạn với Firebase
Trước tiên, hãy đăng ký ứng dụng sản xuất của bạn với Firebase.
Đảm bảo rằng bạn có chữ ký SHA-1 của ứng dụng. Tham khảo Xác thực ứng dụng khách của bạn để tìm hiểu cách thực hiện.
Chuyển đến
của bạn Cài đặt dự án trong bảng điều khiển Firebase, sau đó chọn tab Cài đặt .Cuộn xuống thẻ Ứng dụng của bạn , sau đó chọn ứng dụng Android của bạn.
Thêm chữ ký SHA-1 của ứng dụng vào thông tin ứng dụng của bạn.
2. Hạn chế phạm vi khóa API của bạn
Tiếp theo, định cấu hình các khóa API hiện tại của bạn để không cho phép truy cập vào API Cloud Vision:
Mở trang Thông tin xác thực của Google Cloud Console. Khi được nhắc, hãy chọn dự án của bạn.
Đối với mỗi khóa API hiện có trong danh sách, hãy mở chế độ xem chỉnh sửa.
Trong phần hạn chế API , chọn Khóa hạn chế , sau đó thêm vào danh sách tất cả các API mà bạn muốn khóa API có quyền truy cập. Đảm bảo không bao gồm API Cloud Vision.
Khi bạn định cấu hình các hạn chế API của khóa API, bạn đang khai báo rõ ràng các API mà khóa có quyền truy cập. Theo mặc định, khi phần hạn chế API có khóa Không hạn chế được chọn, khóa API có thể được sử dụng để truy cập bất kỳ API nào được bật cho dự án.
Giờ đây, các khóa API hiện tại của bạn sẽ không cấp quyền truy cập vào các dịch vụ ML trên đám mây, nhưng mỗi khóa sẽ tiếp tục hoạt động đối với mọi API mà bạn đã thêm vào danh sách hạn chế API của nó.
Lưu ý rằng nếu bạn bật bất kỳ API bổ sung nào trong tương lai, bạn phải thêm chúng vào danh sách hạn chế API cho khóa API hiện hành.
3. Tạo và sử dụng khóa API chỉ gỡ lỗi
Cuối cùng, tạo một khóa API mới chỉ được sử dụng để phát triển. Firebase ML có thể sử dụng khóa API này để truy cập các dịch vụ của Google Cloud trong những môi trường không thể xác thực ứng dụng, chẳng hạn như khi chạy trên trình giả lập.
Tạo khóa API mới để sử dụng cho quá trình phát triển:
Mở trang Thông tin xác thực của Google Cloud Console. Khi được nhắc, hãy chọn dự án của bạn.
Nhấp vào Tạo thông tin xác thực > Khóa API và ghi lại khóa API mới. Khóa này cho phép truy cập API từ các ứng dụng chưa được xác thực, vì vậy hãy giữ bí mật khóa này .
Để đảm bảo khóa API gỡ lỗi mới không bị rò rỉ với ứng dụng đã phát hành của bạn, hãy chỉ định khóa API gỡ lỗi trong tệp kê khai Android chỉ được sử dụng cho các bản dựng gỡ lỗi:
Nếu bạn chưa có tệp kê khai gỡ lỗi, hãy tạo một tệp kê khai bằng cách nhấp vào Tệp > Mới > Khác > Tệp kê khai Android và chọn
debug
từ bộ nguồn đích.Trong tệp kê khai gỡ lỗi, hãy thêm phần khai báo sau:
<application> <meta-data android:name="com.firebase.ml.cloud.ApiKeyForDebug" android:value="your-debug-api-key" /> </application>
Trong ứng dụng của bạn, hãy định cấu hình Firebase ML để sử dụng khớp dấu vân tay của chứng chỉ để xác thực ứng dụng khách của bạn trong sản xuất và sử dụng khóa API—khóa gỡ lỗi—chỉ trong các bản dựng gỡ lỗi:
Kotlin+KTX
val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder() if (!BuildConfig.DEBUG) { // Requires physical, non-rooted device: optionsBuilder.enforceCertFingerprintMatch() } // Set other options. For example: optionsBuilder.setConfidenceThreshold(0.8f) // ... // And lastly: val options = optionsBuilder.build() FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)
Java
FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder = new FirebaseVisionCloudImageLabelerOptions.Builder(); if (!BuildConfig.DEBUG) { // Requires physical, non-rooted device: optionsBuilder.enforceCertFingerprintMatch(); } // Set other options. For example: optionsBuilder.setConfidenceThreshold(0.8f); // ... // And lastly: FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build(); FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);
Bước tiếp theo
Xem danh sách kiểm tra khởi chạy để biết thông tin về cách chuẩn bị khởi chạy ứng dụng của bạn khi sử dụng các tính năng khác của Firebase.