AMP 客户端 ID 错误

AMP Client ID Error

目前正在尝试实现 CLIENT_ID 变量 (https://github.com/ampproject/amphtml/blob/master/spec/amp-var-substitutions.md#variable-substitution-in-links),所以 link 是:

<a id="get-started" href="https://subdomain.website.com/?client_id=CLIENT_ID(_ga)" data-amp-replace="CLIENT_ID">

我们也已将域名列入白名单:

<meta name="amp-link-variable-allowed-origin" content="https://www.website.com https://subdomain.website.com">

然后修改GA代码:

    <amp-analytics type="googleanalytics">
     <script type="application/json">
      {
        "vars": {
          "account": "UA-XXXXXXX-X"
        },
        "extraUrlParams": {
          "clientId": "${clientId(_ga)}"
        },
        "triggers": {
          "trackPageview": {
            "on": "visible",
            "request": "pageview"
          }
        }
      }
    </script>
   </amp-analytics>

控制台报告这些错误:

element-service.js:63 The first argument to CLIENT_ID, the fallback Cookie name, is required:  undefined
log.js:317 Uncaught Error: The first argument to CLIENT_ID, the fallback Cookie name, is required: undefined​​​

改用CLIENT_ID(_ga)

<script type="application/json">
{
  "vars": {
    "account": "UA-XXXXXX-X"

  },
  "extraUrlParams": {
    "ampClientId": "CLIENT_ID(_ga)"
  },
  "triggers": {
    "trackPageview": {
      "on": "visible",
      "request": "pageview"
    }
  }
}
</script>

注意这里发生的事情很重要:

当使用 CLIENT_ID(_ga) 时,我们实际上是在告诉 AMP 分析生成一个名为 _ga 的 cookie,然后我们将其用作 extraUrlParams 并连接到 URL.

请务必注意,我们可以使用此方法创建任何 cookie,因此如果我们想使用不同的分析供应商,我们可以生成我们需要的任何 cookie,例如:

CLIENT_ID(some_random_cookie) 将设置一个名为 some_random_cookie 的 cookie,并将 amp_client_id(一些哈希)作为值。