Skip to content

Appcheck Resource not found: oauthClients/(null) #15430

@TailoredTechnology

Description

@TailoredTechnology

Description

When using Google Sign-In with Firebase App Check debug provider, the SDK fails to pass the OAuth client ID when requesting an App Check token, resulting in oauthClients/(null) in the API request URL and a 404 error.

The app correctly configures the client ID (80866*REDECATED*.apps.googleusercontent.com) and it appears in logs, but when Google Sign-In SDK attempts to retrieve an App Check token for the OAuth flow, it sends (null) instead of the actual client ID or api key.

Expected behavior

The Google Sign-In SDK should pass the OAuth client ID when calling:

https://firebaseappcheck.googleapis.com/v1/oauthClients/{clientID}:exchangeDebugToken 

Instead, it sends:

https://firebaseappcheck.googleapis.com/v1/oauthClients/(null):exchangeDebugToken 

Actual behavior

[Google Sign-In iOS]: Error retrieving App Check limited use token: Error Domain=com.google.app_check_core Code=0 "The server responded with an error: - URL: https://firebaseappcheck.googleapis.com/v1/oauthClients/(null):exchangeDebugToken - HTTP status code: 404 - Response body: { "error": { "code": 404, "message": "com.google.apps.framework.request.NotFoundException: Resource not found: oauthClients/(null)", "status": "NOT_FOUND" } } ### Reproducing the issue Steps to reproduce: Set up a Firebase project with multiple iOS apps Configure Google Sign-In with Firebase App Check using debug provider: swift#if DEBUG GIDSignIn.sharedInstance.configureDebugProvider(withAPIKey: apiKey) { error in if let error { print("Error configuring GIDSignIn for App Check: \(error)") } } #endif Implement Google Sign-In: swift@MainActor func signInWGoogleAsync() async throws { guard let clientID = FirebaseApp.app()?.options.clientID else { return } print("Client ID: \(clientID)") // Prints correctly: 8086*REDACTED*.apps.googleusercontent.com let signInHelper = SignInWithGoogleHelper(GIDClientID: clientID) let result = try await signInHelper.signIn() let credential = GoogleAuthProvider.credential( withIDToken: result.idToken, accessToken: result.accessToken ) let authResult = try await Auth.auth().signIn(with: credential) } 
  1. Enable App Check enforcement for the OAuth client in Google Cloud Console
  2. Attempt to sign in with Google
  3. Observe the error in console logs

Environment

Firebase SDK Version: 12.4.0
Google Sign-In SDK Version: 8.0.0
Xcode Version: 16
iOS Version: 18.1
Installation Method: Swift Package Manager
Device: iPhone 18,2 (physical device)

Firebase Products:

  • App Check
  • Authentication
  • Firestore
  • Cloud Storage

Platform: iOS

Project Configuration:

  • Multiple iOS apps in single Firebase project (TailoredConnect + sastrer)
  • OAuth client linked to TailoredConnect app
  • App Check enforcement enabled for OAuth client
  • Bundle ID: com.tailoredTechnologiesllc.TailoredConnect
  • Team ID: CB6LLMVDFJ

Relevant Log Output

DEBUG: App Check debug token (UUID format): D270AADC-REDACTED App Check configured with debug provider GIDSignIn configured with client ID: 8086*REDACTED*.apps.googleusercontent.com this is the clinet id when login in 8086*REDACTED*.apps.googleusercontent.com 12.4.0 - [FirebasePerformance][I-PRF100009] Logging network request trace - https://firebaseappcheck.googleapis.com/v1/oauthClients/(null):exchangeDebugToken, Response code: 404, 190.2620ms <Debug> [AppCheckCore][I-GAC004004] Failed to exchange debug token to app check token: Error Domain=com.google.app_check_core Code=0 "The server responded with an error: - URL: https://firebaseappcheck.googleapis.com/v1/oauthClients/(null):exchangeDebugToken - HTTP status code: 404 - Response body: { "error": { "code": 404, "message": "com.google.apps.framework.request.NotFoundException: Resource not found: oauthClients/(null)", "status": "NOT_FOUND" } } [Google Sign-In iOS]: Error retrieving App Check limited use token: Error Domain=com.google.app_check_core Code=0 "The server responded with an error: - URL: https://firebaseappcheck.googleapis.com/v1/oauthClients/(null):exchangeDebugToken - HTTP status code: 404 ### Firebase SDK Version 12.4 ### Xcode Version Version 26.0.1 (17A400) ### Installation Method Swift Package Manager ### Firebase Product(s) App Check, Authentication, Crashlytics, Database, Firestore, In-App Messaging, Installations, Remote Config, Storage, Analytics ### Targeted Platforms iOS ### Relevant Log Output ```shell 12.4.0 - [FirebasePerformance][I-PRF100009] Logging network request trace - https://firebaseappcheck.googleapis.com/v1/oauthClients/(null):exchangeDebugToken, Response code: 404, 190.2620ms [AppCheckCore][I-GAC004004] Failed to exchange debug token to app check token: Error Domain=com.google.app_check_core Code=0 "The server responded with an error: URL: https://firebaseappcheck.googleapis.com/v1/oauthClients/(null):exchangeDebugToken HTTP status code: 404 Response body: { "error": { "code": 404, "message": "com.google.apps.framework.request.NotFoundException: Resource not found: oauthClients/(null)", "status": "NOT_FOUND" } } [Google Sign-In iOS]: Error retrieving App Check limited use token: Error Domain=com.google.app_check_core Code=0 "The server responded with an error: URL: https://firebaseappcheck.googleapis.com/v1/oauthClients/(null):exchangeDebugToken HTTP status code: 404 

If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved snippet
Replace this line with the contents of your Package.resolved. 

If using CocoaPods, the project's Podfile.lock

Expand Podfile.lock snippet
Replace this line with the contents of your Podfile.lock! 

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions