我有一个颤振应用程序,添加 AppCheck 并使用 Android Emulator 进行测试和调试。我正在测试实时数据库的访问。在我的 Firebase 控制台中,AppCheck 显示我的所有访问权限都属于这种类型:未验证:无效请求。我遵循了这个:https ://firebase.google.com/docs/app-check/android/debug-provider 。
我的应用程序/build.gradle
dependencies {
...
//implementation 'com.google.firebase:firebase-appcheck-safetynet:16.0.0-beta02'
implementation 'com.google.firebase:firebase-appcheck-debug:16.0.0-beta03'
...
}
在我的 main.dart
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
// Initialize AppCheck
await FirebaseAppCheck.instance.activate();
...
在 MainActivity.kt 中,我有以下内容:
import io.flutter.embedding.android.FlutterActivity
import android.os.Bundle
import android.util.Log
import com.google.firebase.FirebaseApp
import com.google.firebase.appcheck.FirebaseAppCheck
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory
//import com.google.firebase.appcheck.safetynet.SafetyNetAppCheckProviderFactory
class MainActivity: FlutterActivity() {
// For Debug Only. Do not do this for Production
override fun onCreate(savedInstanceState: Bundle?) {
FirebaseApp.initializeApp(this)
Log.e("MainActivity", "onCreate")
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(DebugAppCheckProviderFactory.getInstance())
super.onCreate(savedInstanceState)
}
}
从logcat,我可以看到以下日志
com.google.firebase.appcheck.debug.internal.DebugAppCheckProvider: Enter this debug secret into the allow list in the Firebase Console for your project: xxxxxxxxxxxxx
基于令牌,我使用托管调试令牌并将其设置为调试令牌。
使用 AppCheck
我希望看到经过验证的请求出现。
我还使用 Android Studio profiler 来监控网络,我可以看到一个请求
POST https://firebaseappcheck.googleapis.com/v1beta/projects/<app>/apps/<appid>:exchangeSafetyNetToken?key=<key>
有效载荷中有一个 JSON 安全网令牌。
我得到 403 的响应。
请注意,我没有在实时数据库上启用强制。
AppCheck 缺少什么?我应该使用模拟器还是仅在真实物理设备(发布模式)上查看经过验证的请求?