由于 Measurement Procotol 支持来自 Google Analytics for Firebase SDK 和 gtag.js 的 ID,因此请确保您使用的是正确的 ID。您应该使用哪些 ID 取决于您使用的是 Google Analytics for Firebase SDK 还是 gtag.js。下文简要介绍了您应该使用哪些 ID:
Google Analytics for Firebase SDK
如果您使用的是 Google Analytics for Firebase SDK,则应该使用以下 ID:
firebase_app_id - 可将此 ID 添加到请求的查询参数中。此 ID 可唯一标识您的 Firebase 应用。您的应用的所有用户都具有相同的 firebase_app_id。此值可在 Firebase 控制台中的以下位置下找到: 项目设置 > 常规 > 您的应用 > 应用 ID
app_instance_id - 可将此 ID 添加到请求的 POST 正文中。此 ID 可唯一标识 Firebase 应用的指定安装。此值会因应用的每次安装而异。各个 Firebase 平台请求此值的方法如下所示:
[null,null,["最后更新时间 (UTC):2025-07-26。"],[[["\u003cp\u003eThis guide helps troubleshoot common Google Analytics 4 Measurement Protocol implementation errors, focusing on missing events and invalid user/device IDs.\u003c/p\u003e\n"],["\u003cp\u003eIf events aren't appearing, ensure your \u003ccode\u003eapi_secret\u003c/code\u003e is correct, valid, accurately copied, and you're using the appropriate device identifier (\u003ccode\u003eapp_instance_id\u003c/code\u003e or \u003ccode\u003eclient_id\u003c/code\u003e, not \u003ccode\u003eadvertising_id\u003c/code\u003e).\u003c/p\u003e\n"],["\u003cp\u003eWhen using the Measurement Protocol, select the correct IDs based on whether you're implementing via Firebase or gtag.js, as outlined in the guide.\u003c/p\u003e\n"],["\u003cp\u003eFor Firebase, utilize \u003ccode\u003efirebase_app_id\u003c/code\u003e and \u003ccode\u003eapp_instance_id\u003c/code\u003e, avoiding \u003ccode\u003efirebase_instance_id\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eFor gtag.js, use \u003ccode\u003emeasurement_id\u003c/code\u003e and \u003ccode\u003eclient_id\u003c/code\u003e for proper event tracking.\u003c/p\u003e\n"]]],["To resolve event visibility issues in Google Analytics, verify the correct `api_secret` is used, valid, and copied accurately, and avoid using `advertising_id`. For Firebase, use `firebase_app_id` in query parameters and `app_instance_id` in the POST body; retrieve `app_instance_id` using the appropriate platform's method. For gtag.js, utilize `measurement_id` in query parameters and `client_id` in the POST body. Both `client_id` and `app_instance_id` should differ for each user.\n"],null,["# Troubleshooting\n\nThis guide outlines common troubleshooting steps to fix common implementation\nerrors.\n\nNo events\n---------\n\nIf your events aren't showing up in Google Analytics, there are a few common\nissues you should look for.\n\nFirst choose your client: \nFirebase gtag.js\n\n\u003cbr /\u003e\n\n- Are you using the correct [api_secret](/analytics/devguides/collection/protocol/ga4/reference#api_secret)?\n\n Check that you're using the `api_secret` for the right stream. If you set up\n the measurement protocol for multiple streams, each stream will have its own\n secret.\n- Is your [api_secret](/analytics/devguides/collection/protocol/ga4/reference#api_secret) still valid?\n\n In order to help combat spam, you're able to revoke `api_secret`s. Make sure\n that the `api_secret` you are using is still valid. It's possible that\n another user with access to your stream may have revoked access to it by\n mistake.\n- Is your [api_secret](/analytics/devguides/collection/protocol/ga4/reference#api_secret) copied correctly?\n\n `api_secret` is case-sensitive. Double check that the `api_secret` in the\n Google Analytics UI is *exactly* the same as the one you're using in your\n code.\n- Don't use `advertising_id`.\n\n `advertising_id` is not supported as a valid device identifier. Use\n `app_instance_id` if you're using Firebase and `client_id` if you're using\n gtag.js.\n\nInvalid IDs\n-----------\n\nSince the Measurement Procotol supports IDs from the Google Analytics for\nFirebase SDK and gtag.js, make sure you use the right ID. **The IDs you should\nuse changes depending on whether you are using the Google Analytics for Firebase\nSDK or gtag.js.** The following outlines which IDs you should be using:\n\n**Google Analytics for Firebase SDK**\n\nIf you're using the Google Analytics for Firebase SDK the IDs you *should* use\nare:\n\n- [`firebase_app_id`](/analytics/devguides/collection/protocol/ga4/reference?client_type=firebase#firebase_app_id) - Include this ID in the query parameters for the request. This ID uniquely identifies your Firebase App. All users of your app will have the same `firebase_app_id`. Found in the Firebase console under: \n **Project Settings** \\\u003e **General** \\\u003e **Your Apps** \\\u003e **App ID**\n- [`app_instance_id`](/analytics/devguides/collection/protocol/ga4/reference?client_type=firebase#app_instance_id) - Include this ID in the POST body for the request. This\n ID uniquely identifies a given installation of a Firebase App. This value\n will be different for every installation of your app. The methods to request\n this value for each Firebase platform are as follows:\n\n - [Android - getAppInstanceId()](https://firebase.google.com/docs/reference/android/com/google/firebase/analytics/FirebaseAnalytics#public-taskstring-getappinstanceid)\n - [Kotlin - getAppInstanceId()](https://firebase.google.com/docs/reference/kotlin/com/google/firebase/analytics/FirebaseAnalytics#getappinstanceid)\n - [Swift - appInstanceID()](https://firebase.google.com/docs/reference/swift/firebaseanalytics/api/reference/Classes/Analytics#appinstanceid)\n - [Objective-C - appInstanceID](https://firebase.google.com/docs/reference/ios/firebaseanalytics/api/reference/Classes/FIRAnalytics#+appinstanceid)\n - [C++ - GetAnalyticsInstanceId()](https://firebase.google.com/docs/reference/cpp/namespace/firebase/analytics#getanalyticsinstanceid)\n - [Unity - GetAnalyticsInstanceIdAsync()](https://firebase.google.com/docs/reference/unity/class/firebase/analytics/firebase-analytics#getanalyticsinstanceidasync)\n\nYou should *not* use the following:\n\n- `firebase_instance_id` - This ID *should not* be included in your request. This ID is used for identifiying a given instance of the app, but is Firebase specific. It's used for tasks such as FCM messages.\n\n**gtag.js**\n\nIf you're using gtag.js, the IDs you *should* use are:\n\n- [`measurement_id`](/analytics/devguides/collection/protocol/ga4/reference?client_type=gtag#measurement_id) - Include this ID in the query parameters for the request. This ID uniquely identifies a Data Stream. All users of your website will have the same `measurement_id`. Found in the Google Analytics UI under: \n **Admin** \\\u003e **Data Streams** \\\u003e **choose your stream** \\\u003e **Measurement ID**\n- [`client_id`](/analytics/devguides/collection/protocol/ga4/reference?client_type=gtag#client_id) - Include this ID in the POST body for the request. This ID uniquely identifies a given user instance of a web client. This value will be different for every user of your app. See [these examples](/gtagjs/reference/api#get) for how to retrieve this value.\n\nServer-side tagging events missing\n----------------------------------\n\nA [Server-side Tag Manager installation with a Measurement Protocol\nclient](/tag-platform/tag-manager/server-side/send-data#server-to-server_apps) lets you send events in the Measurement Protocol *format* to a\ncontainer. The container then sends those events to Google Analytics using the\nsame mechanism as all other SGTM events.\n| **Note:** It *doesn't* send those events to the Measurement Protocol endpoint, and therefore doesn't support all the features of the Measurement Protocol endpoint, such as deriving [geographic and device information](/analytics/devguides/collection/protocol/ga4#geo_device) from tagging events.\n\nIf you want all the features of the Measurement Protocol, send events directly to the\nMeasurement Protocol instead of your container."]]