我有一个flutter应用,添加了AppCheck,使用Android Emulator进行测试和调试,我正在测试Realtime数据库的访问,在我的Firebase Console中,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'
...
}
在我的主. 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
Realtime Database only shows unverified requests
我希望看到已验证的请求显示。
我还使用Android Studio Profiler来监控网络,我可以看到请求POST https://firebaseappcheck.googleapis.com/v1beta/projects/<app>/apps/<appid>:exchangeSafetyNetToken?key=<key>
有效载荷中有一个JSON安全网令牌。
我得到的响应是403。
注意,我没有打开实时数据库上的强制。
AppCheck缺少了什么?我应该使用模拟器看到验证过的请求还是只在真实的物理设备上(发布模式)?
3条答案
按热度按时间bvuwiixz1#
我尝试使用
onCreate
,但无法使其工作。使用
MethodChannel
可以代替:🎉:在Flutter调试模式下,Android模拟器上每次启动应用的结果:
jq6vz3qz2#
我设法通过添加以下条件解决了这个问题(在调试模式下):
nle07wnf3#
要确保AppCheck在flutter项目中正常工作,请确保安装了firebase_app_check包。安装后,您可以按如下方式使用它:
使用上面的三元运算符可以设置它,然后忘记它,只要记住启用Enable App Check enforcement就可以了。
记住:
implementation platform('com.google.firebase:firebase-bom:31.2.0')
。安装了bom后,您无需单独导入每个firebase服务。bom会为您处理这些事务。您可以在这里比较物料清单版本。
package:flutter/foundation.dart
可访问kDebugMode