

# 连接到 LinkedIn
<a name="connecting-to-linkedin"></a>

LinkedIn 是一种付费营销工具，支持通过各种赞助帖子和其他方式访问 LinkedIn 社交网络。LinkedIn 是一款强大的营销工具，可供 B2B 公司吸引潜在客户、进行在线识别、共享内容等。

**Topics**
+ [AWS Glue 支持 LinkedIn](linkedin-support.md)
+ [包含创建和使用连接的 API 操作的策略](linkedin-configuring-iam-permissions.md)
+ [配置 LinkedIn](linkedin-configuring.md)
+ [配置 LinkedIn 连接](linkedin-configuring-connections.md)
+ [从 LinkedIn 实体读取内容](linkedin-reading-from-entities.md)
+ [LinkedIn 连接选项](linkedin-connection-options.md)
+ [创建 LinkedIn 账户](linkedin-create-account.md)
+ [限制](linkedin-connector-limitations.md)

# AWS Glue 支持 LinkedIn
<a name="linkedin-support"></a>

AWS Glue 对 LinkedIn 的支持情况如下：

**是否支持作为来源？**  
是。可以使用 AWS Glue ETL 作业查询 LinkedIn 中的数据。

**是否支持作为目标？**  
否。

**支持的 LinkedIn API 版本**  
**202406（2024 年 6 月）**

# 包含创建和使用连接的 API 操作的策略
<a name="linkedin-configuring-iam-permissions"></a>

以下示例策略描述了创建和使用连接所需的 AWS 权限。如果您要创建新角色，请创建包含以下内容的策略：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

如果不想使用前述方法，也可以使用以下托管 IAM 策略：
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)：授予对各种 AWS Glue 进程代表您运行所需的资源的访问权限。这些资源包括 AWS Glue、Amazon S3、IAM、CloudWatch Logs 和 Amazon EC2。如果您遵循此策略中指定的资源的命名约定，则 AWS Glue 进程具有所需的权限。此策略通常附加到在定义爬网程序、作业和开发终端节点时指定的角色。
+  [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)：当策略所附加到的身份使用 AWS 管理控制台时，授予对 AWS Glue 资源的完全访问权限。如果遵循此策略中指定的资源的命名约定，则用户具有完全控制台功能。此策略通常附加到 AWS Glue 控制台的用户。

# 配置 LinkedIn
<a name="linkedin-configuring"></a>

必须满足以下要求，才能使用 AWS Glue 从 LinkedIn 传输数据：

## 最低要求
<a name="linkedin-configuring-min-requirements"></a>
+ 拥有一个 LinkedIn 账户。有关创建账户的更多信息，请参阅[创建 LinkedIn 账户](linkedin-create-account.md)。
+ LinkedIn 账户已启用 API 访问权限。
+ 已在 LinkedIn 账户中创建了 `OAuth2 API` 集成。此集成提供 AWS Glue 在对账户进行身份验证调用时，用于安全访问数据的客户端凭证。有关更多信息，请参阅 [创建 LinkedIn 账户](linkedin-create-account.md)。

如果满足这些要求，就可以将 AWS Glue 连接到 LinkedIn 账户。对于常见连接，无需在 LinkedIn 中执行其他操作。

# 配置 LinkedIn 连接
<a name="linkedin-configuring-connections"></a>

 LinkedIn 支持 OAuth2 的 `AUTHORIZATION_CODE` 授权类型。

此授权类型被视为“三足型”`OAuth`，因为它依赖于将用户重定向到第三方授权服务器来对用户进行身份验证。用户可以选择在 LinkedIn 中创建自己的关联应用程序，并在通过 AWS Glue 控制台创建连接时，提供自己的客户端 ID 和客户端密钥。在这种情况下，他们仍会重定向到 LinkedIn，以便登录并授权 AWS Glue 访问其资源。

此授权类型会同时生成刷新令牌和访问令牌。访问令牌在创建 60 天后过期。可以使用刷新令牌获取新的访问令牌。

有关为 `Authorization Code OAuth` 流创建关联应用程序的 LinkedIn 公共文档，请参阅 [Authorization Code Flow (3-legged OAuth)](https://learn.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow?toc=%2Flinkedin%2Fmarketing%2Ftoc.json&bc=%2Flinkedin%2Fbreadcrumb%2Ftoc.json&view=li-lms-2024-07&tabs=HTTPS1)。

**配置 LinkedIn 连接**

1.  在 AWS Secrets Manager 中，创建一个包含以下详细信息的密钥：
   + 对于客户托管的关联应用程序：密钥应包含关联应用程序的消费者密钥，并将 `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` 作为键。
   + 对于 AWS 托管式关联应用程序：密钥可以为空或具有某个临时值。
**注意**  
必须在 AWS Glue 中为每个连接创建密钥。

1. 在 AWS Glue Studio 中，按照以下步骤在**数据连接**下创建连接：

   1. 选择**连接类型**时，请选择 **LinkedIn**。

   1. 提供 LinkedIn 环境。

   1. 选择 AWS Glue 可以代入并有权执行以下操作的 IAM 角色：

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. 在 AWS Glue 中选择您要用于此连接的 `secretName`，然后放置令牌。

   1. 如果要使用网络，请选择**网络选项**。

1. 向与您的 AWS Glue 作业关联的 IAM 角色授予读取 `secretName` 的权限。

# 从 LinkedIn 实体读取内容
<a name="linkedin-reading-from-entities"></a>

**先决条件** 

要从中读取内容的 LinkedIn 对象。请参阅下面的支持的实体表，查看可用的实体。

 **支持的实体** 


| 实体 | 可以筛选 | 支持限制 | 支持排序依据 | 支持 Select \$1 | 支持分区 | 
| --- | --- | --- | --- | --- | --- | 
| 广告账户 | 支持 | 是 | 是 | 是 | 否 | 
| 市场活动 | 支持 | 是 | 是 | 是 | 否 | 
| 活动组 | 支持 | 是 | 是 | 是 | 否 | 
| 素材 | 支持 | 是 | 是 | 是 | 否 | 
| Ad Analytics | 是 | 否 | 否 | 是 | 否 | 
| Ad Analytics 所有广告账户 | 是 | 否 | 否 | 是 | 否 | 
| Ad Analytics 所有活动 | 是 | 否 | 否 | 是 | 否 | 
| Ad Analytics 所有活动组 | 是 | 否 | 否 | 是 | 否 | 
| Ad Analytics 所有广告素材 | 是 | 否 | 否 | 是 | 否 | 
| 共享统计数据 | 是 | 否 | 否 | 是 | 否 | 
| 页面统计数据 | 是 | 否 | 否 | 是 | 否 | 
| 粉丝统计数据 | 是 | 否 | 否 | 是 | 否 | 

 **示例** 

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="linkedin",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "adaccounts",
        "API_VERSION": "202406"
    }
)
```


**LinkedIn 实体和字段详细信息**  

|  **字段数据类型**  |  **支持的筛选运算符**  | 
| --- | --- | 
|  字符串  |  =  | 
|  日期时间  |  BETWEEN、=  | 
|  数值  |  =  | 
|  布尔值  |  =  | 

# LinkedIn 连接选项
<a name="linkedin-connection-options"></a>

以下是 LinkedIn 的连接选项：
+ `ENTITY_NAME`（字符串）：（必填）用于读取/写入。LinkedIne 中对象的名称。例如，adAccounts。
+ `API_VERSION`（字符串）：（必填）用于读取/写入。要使用的 LinkedIn Rest API 版本。该值将为 202406，因为 LinkedIn 目前仅支持版本 202406。
+ `SELECTED_FIELDS`（列表<字符串>）– 默认：empty(SELECT \$1)。用于读取。要为所选实体选择的列。
+ `FILTER_PREDICATE`（字符串）– 默认：空。用于读取。应采用 Spark SQL 格式。
+ `QUERY`（字符串）– 默认：空。用于读取。完整的 Spark SQL 查询。

# 创建 LinkedIn 账户
<a name="linkedin-create-account"></a>

**创建 LinkedIn 应用程序和 OAuth 凭证**

1. 导航到 **LinkedIn 开发人员网络**页面，然后使用 LinkedIn 账户凭证登录。

1. 导航到**我的应用程序**页面，然后选择**创建应用程序**，创建新的 LinkedIn 应用程序。

1. 在应用程序注册表中输入以下详细信息：
   + **公司名称**：选择现有公司或创建新公司。
   + **名称**：输入应用程序名称。
   + **描述**：输入应用程序描述。
   + **应用程序徽标**：选择图像文件作为应用程序徽标。
   + **应用程序用途**：选择应用程序的用途。
   + **网站 URL**：输入包含应用程序详细信息的网站 URL。
   + **企业电子邮件**：输入企业电子邮件地址。
   + **企业电话**：输入企业电话号码。
   + **LinkedIn API 使用条款**：阅读并同意。

1. 填写好应用程序注册表后，选择**提交**。

   系统会重定向到**身份验证**页面，此页面会显示身份验证密钥（客户端 ID 和客户端密钥）和其他相关详细信息。

1. 如果 Web 应用程序需要从用户的 LinkedIn 账户访问用户的电子邮件地址，请选择 `r_emailaddress` 权限。此外，可以为 LinkedIn 应用程序指定已授权的重定向 URL。

**在 LinkedIn 账户中创建页面**

1. 导航到 [LinkedIn 开发人员产品](https://developer.linkedin.com/)。

1. 在 **LinkedIn 开发人员产品**页面的右上角，选择**我的应用程序**。

1. 在**我的应用程序**页面的右上角，选择**创建应用程序**。

1. 在**创建应用程序**页面上的**应用程序名称**字段中，输入应用程序名称。

1. 在 **LinkedIn 页面**字段中，输入公司页面名称或 URL。
**注意**  
如果没有 LinkedIn 页面，可以选择**创建新的 LinkedIn** 来创建一个页面。

1. 在**隐私政策 URL** 字段中，输入隐私政策 URL。

1. 选择**上传徽标**，上传一张用户授权使用应用程序时会显示的图片。

1. 在**法律协议**部分，选择**我已阅读并同意这些条款**。

1. 选择**创建应用程序**。

   随即会创建新应用程序并显示在**我的应用程序**选项卡下。

**在 LinkedIn 上发布活动广告**

1. 登录**营销管理工具**。

1. 选择现有**活动组**，或选择**创建**来创建新的活动组。

1. 选择目标。

1. 选择活动组、预算和时间表。

1. 建立目标受众。

1. 选择广告格式。

1. 选择预算和时间表。

1. 设置广告。

1. 审核和启动。

# 限制
<a name="linkedin-connector-limitations"></a>

对于 Analytics 字段 `ad_analytics_all_adAccounts`、`ad_analytics_all_campaigns`、`ad_analytics_all_campaign_groups` 和 `ad_analytics_all_adCreatives`，必须使用筛选条件才能检索记录。