Play Integrity API调用报403错误,Firebase App Check集成故障求助
Firebase App Check集成Cloud Function失败排查
应用端App Check初始化(Main Activity)
FirebaseApp.initializeApp(this) Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), )
Logcat错误信息:Error getting App Check token; using placeholder token instead. Error: com.google.firebase.FirebaseException: Error returned from API. code: 403 body: App attestation failed.
Python Cloud Function代码
from firebase_functions import https_fn from google.auth import default from googleapiclient.discovery import build from firebase_admin import initialize_app # Initialize the Firebase Admin SDK initialize_app() @https_fn.on_call( enforce_app_check = True ) def verify_purchase(req: https_fn.CallableRequest) -> dict: """Callable Cloud Function to verify Android subscription purchases.""" print("Request: ", req) try: # Use Application Default Credentials (ADC) credentials, _ = default(scopes=['https://www.googleapis.com/auth/androidpublisher']) androidpublisher = build('androidpublisher', 'v3', credentials=credentials) except Exception as e: raise https_fn.HttpsError( code=https_fn.FunctionsErrorCode.INTERNAL, message="Failed to initialize credentials or service", details=str(e) ) # Extracting request data purchase_token = req.data.get('token') print("Purchase Token: ", purchase_token) subscription_id = req.data.get('subscription_id') print("Subscription ID: ", subscription_id) package_name = "" #Ive added this in my real code if not purchase_token: raise https_fn.HttpsError( code=https_fn.FunctionsErrorCode.INVALID_ARGUMENT, message="Token is required" ) if not subscription_id: raise https_fn.HttpsError( code=https_fn.FunctionsErrorCode.INVALID_ARGUMENT, message="Subscription ID is required" ) try: subscription = androidpublisher.purchases().subscriptions().get( packageName=package_name, subscriptionId=subscription_id, token=purchase_token ).execute() return {"data": subscription} except Exception as e: raise https_fn.HttpsError( code=https_fn.FunctionsErrorCode.UNKNOWN, message="Error verifying subscription", details=str(e) )
应用端调用函数代码
private fun verifyPurchaseWithFirebase(purchaseToken: String, subscriptionId: String) { val data = hashMapOf( "token" to purchaseToken, "subscription_id" to subscriptionId ) Log.d(TAG, "Verifying purchase with token: $purchaseToken") Log.d(TAG, "Data to send to Firebase: $data") functions .getHttpsCallable("verify_purchase") .call(data) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Purchase verified successfully with Firebase") val result = task.result?.data as? Map<String, Any> if (result != null) { updateUserSubscriptionStatus(result) } else { Log.e(TAG, "No data received from Firebase function") } } else { Log.e(TAG, "Failed to verify purchase with Firebase", task.exception) } } }
已完成配置及当前状态
- 已在Firebase配置256位SHA指纹,Play Integrity验证提供商状态为已注册
- 已启用Play Integrity API,但错误率100%
- Play控制台显示Integrity API集成仅处于"已开始"状态,云项目已关联,解绑重绑并等待半天仍未解决
请问我是否遗漏了配置?
内容的提问来源于stack exchange,提问作者ethanworker
相关产品推荐
相关产品推荐

