【问题标题】:How do you connect Cognito to Pinpoint for analytics?您如何将 Cognito 连接到 Pinpoint 进行分析?
【发布时间】:2020-12-09 15:02:08
【问题描述】:

我正在尝试对 Cognito 用户池进行一些基本分析。看起来很简单,我在 Pinpoint 中创建了一个项目,然后我转到我的用户池,转到常规设置 > 分析,单击添加分析按钮,选择我的应用程序使用的 Amazon Cognito 应用程序客户端,指向 Pinpoint我刚刚创建的项目,选中了“共享用户配置文件数据”复选框(尽管我认为这不是绝对必要的),它有消息告诉我是否会使用 IAM 角色等等。单击保存,没有错误,我假设此时我会开始在 Pinpoint 中看到分析,但绝对没有任何显示。我确实有一条消息说我还没有启用任何功能,但我没有看到任何功能我需要启用。到目前为止,我并不关心广告系列,然后在应用程序分析下,它似乎适合您手动更新您的移动或网络应用程序以发送某些内容,但我认为那是您需要自定义某些内容的情况。我弄错了吗?仅当您更改 Web 应用程序以明确将内容发送到 Pinpoint 时,此集成才有效吗?我只是假设如果我连接 Cognito 和 Pinpoint,分析就会显示出来,因为 Cognito 显然知道人们正在登录,而无需您手动提出一些额外的请求。

【问题讨论】:

  • 两个导入问题您使用的是 AWS Amplify 还是 AWS Mobile SDK?您使用的是原生移动应用还是网络应用?
  • @syumaK 我正在使用网络应用程序,但没有使用 Amplify。我仍然不确定为什么这很重要。如果您使用 Cognito 注册人员或进行身份验证,Cognito 是否能够在您不必使用其他任何东西的情况下报告这一点?如果答案是“不”也没关系,只是我不清楚。看起来您只需将两者连接起来,数据就会自动从 Cognito 流向 Pinpoint。

标签: amazon-web-services amazon-cognito aws-pinpoint


【解决方案1】:

根据我的研究,我发现由于您使用的是 Web 应用程序而不使用 AWS Amplify 框架,因此您需要向您的应用程序添加额外的代码行,以便将 Cognito 身份验证分析数据发送到您的 Amazon Pinpoint 项目。

  1. 如果您使用的是 Javascript SDK,您可以将initate-Auth property 代码 sn-p 添加到您的前端应用程序中:

     var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
    
     var params = {
       AuthFlow: "USER_PASSWORD_AUTH",
       ClientId: 'STRING_VALUE', /* the client ID attached to the Pinpoint project */
       AuthParameters: {
         'USERNAME': 'STRING_VALUE',
         'PASSWORD': 'STRING_VALUE'
       },
       AnalyticsMetadata: {
         AnalyticsEndpointId: 'STRING_VALUE' /* the Pinpoint project ID */
       },
     };
     cognitoidentityserviceprovider.initiateAuth(params, function(err, data) {
       if (err) console.log(err, err.stack); // an error occurred
       else     console.log(data);           // successful response
     });
    
  • 在上述代码 sn-p 中,当客户端进行 API 调用(例如登录、注册)时,Pinpoint 项目/应用程序 ID 作为“AnalyticsMetadata”参数的一部分添加等)到 Cognito 用户池。因此,API 调用将附加 pinpoint 项目 ID,Cognito 可以使用该信息将数据发送到您的 Pinpoint 项目。如果没有这个关键步骤,分析数据将不会发送到 Pinpoint,并会导致您描述的行为。
  1. 如果使用 CLI(用于验证/测试目的),您可以执行以下 AWS CLI initiate-auth 命令:

    $ aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=STRING_VALUE,PASSWORD=STRING_VALUE --client-id STRING_VALUE --analytics-metadata AnalyticsEndpointId=STRING_VALUE
    

要点是:

Amazon Cognito integration with Amazon Pinpoint 仅适用于使用 Cognito SDK for Mobile Apps(AWS 移动 SDK 或 JavaScript - AWS Amplify JavaScript 库)的应用程序(客户端)。

【讨论】:

  • 如果我使用项目 ID,那么它将无法正常工作。您需要使用用户特定的 UUID 作为 AnalyticsEndpointId 的值。
【解决方案2】:

请注意 syumaK 的响应,是的,您需要更新代码的 initAuth 调用以包含 AnalyticsMetadat 属性。但是,我发现 AnalyticsEndpointId 不应该是 Pinpoint 项目 ID。

我相信,由于您已经将 Cognito 配置为与 pinpoint 项目集成,它已经知道您正在向哪个 pinpoint 项目发送指标。 AnalyticsEndpointId 应该是登录的唯一标识符。

这里的文档绝对是片状的。 syumaK 的 cli 似乎与 Cognito API Reference

的描述不同

发生在我身上的是,我使用了 pinpoint 项目 id,当我使用多个用户登录时,它认为它是同一个。每日活跃用户仍为 1。 AWS Support 澄清说它应该是每个用户的唯一标识符。因此,在将 id 更改为用户的电子邮件后,我开始获得每日活跃用户的准确数字。

这似乎与不使用 Cognito SDK for Mobile Apps 或 Amplify 一样有用。您只能获取每日/每月活跃用户、身份验证指标等信息。您无法按细分等进一步细分。

【讨论】:

    猜你喜欢
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多