4

我有一个颤振应用程序,添加 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 缺少什么?我应该使用模拟器还是仅在真实物理设备(发布模式)上查看经过验证的请求?

4

0 回答 0