# Dub (/docs/plugins/dub)

使用 Dub 链接和 OAuth 关联进行更好的潜在客户跟踪认证插件



[Dub](https://dub.co/) 是一个面向创业者、创作者和增长团队的开源现代链接管理平台。

此插件允许您在用户通过 Dub 链接注册时跟踪潜在客户。它还添加了 OAuth 关联支持，以便您构建扩展 Dub 链接管理基础设施的集成。

## 安装 [#安装]

<Steps>
  <Step>
    ### 安装插件 [#安装插件]

    首先，安装插件：

    <CodeBlockTabs defaultValue="npm" groupId="persist-install">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="npm">
          npm
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="pnpm">
          pnpm
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="yarn">
          yarn
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="bun">
          bun
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="npm">
        ```bash
        npm install @dub/better-auth
        ```
      </CodeBlockTab>

      <CodeBlockTab value="pnpm">
        ```bash
        pnpm add @dub/better-auth
        ```
      </CodeBlockTab>

      <CodeBlockTab value="yarn">
        ```bash
        yarn add @dub/better-auth
        ```
      </CodeBlockTab>

      <CodeBlockTab value="bun">
        ```bash
        bun add @dub/better-auth
        ```
      </CodeBlockTab>
    </CodeBlockTabs>
  </Step>

  <Step>
    ### 安装 Dub SDK [#安装-dub-sdk]

    接下来，在您的服务器上安装 Dub SDK：

    <CodeBlockTabs defaultValue="npm" groupId="persist-install">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="npm">
          npm
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="pnpm">
          pnpm
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="yarn">
          yarn
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="bun">
          bun
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="npm">
        ```bash
        npm install dub
        ```
      </CodeBlockTab>

      <CodeBlockTab value="pnpm">
        ```bash
        pnpm add dub
        ```
      </CodeBlockTab>

      <CodeBlockTab value="yarn">
        ```bash
        yarn add dub
        ```
      </CodeBlockTab>

      <CodeBlockTab value="bun">
        ```bash
        bun add dub
        ```
      </CodeBlockTab>
    </CodeBlockTabs>
  </Step>

  <Step>
    ### 配置插件 [#配置插件]

    将插件添加到您的认证配置中：

    ```ts title="auth.ts"
    import { betterAuth } from "better-auth"
    import { dubAnalytics } from "@dub/better-auth"
    import { dub } from "dub"

    export const auth = betterAuth({
        plugins: [
            dubAnalytics({
                dubClient: new Dub()
            })
        ]
    })
    ```
  </Step>
</Steps>

## 使用 [#使用]

### 潜在客户跟踪 [#潜在客户跟踪]

默认情况下，插件会将注册事件跟踪为潜在客户。您可以通过将 `disableLeadTracking` 设置为 `true` 来禁用此功能。

```ts
import { dubAnalytics } from "@dub/better-auth";
import { betterAuth } from "better-auth";
import { Dub } from "dub";

const dub = new Dub();

const betterAuth = betterAuth({
  plugins: [
    dubAnalytics({
      dubClient: dub,
      disableLeadTracking: true, // 禁用潜在客户跟踪
    }),
  ],
});
```

### OAuth 关联 [#oauth-关联]

该插件支持用于账户关联的 OAuth。

首先，您需要在 Dub 中设置 OAuth 应用。Dub 支持 OAuth 2.0 认证，推荐用于构建扩展 Dub 功能的集成。[了解更多关于 OAuth 的信息](https://dub.co/docs/integrations/quickstart#integrating-via-oauth-2-0-recommended)。

获取客户端 ID 和客户端密钥后，您可以配置该插件。

```ts
dubAnalytics({
  dubClient: dub,
  oauth: {
    clientId: "your-client-id",
    clientSecret: "your-client-secret",
  },
});
```

在客户端，您需要使用 `dubAnalyticsClient` 插件。

```ts
import { createAuthClient } from "better-auth/client";
import { dubAnalyticsClient } from "@dub/better-auth/client";

const authClient = createAuthClient({
  plugins: [dubAnalyticsClient()],
});
```

要与 Dub 关联账户，您需要使用 `dub.link`。

**Endpoint:** `POST /dub/link`

### Client Side

```ts
const { data, error } = await authClient.dub.link({
    callbackURL: "/dashboard", // required, 链接后重定向到的 URL
});
```

### Server Side

```ts
const data = await auth.api.dubLink({
    // This endpoint requires session cookies.
    headers: await headers(),
});
```

### Type Definition

```ts
type dubLink = {
  /**
   * 链接后重定向到的 URL
   * @clientOnly
  */
  callbackURL: string = "/dashboard"
}
```

## 选项 [#选项]

您可以向插件传递以下选项：

### `dubClient` [#dubclient]

Dub 客户端实例。

### `disableLeadTracking` [#disableleadtracking]

禁用注册事件的潜在客户跟踪。

### `leadEventName` [#leadeventname]

注册潜在客户的事件名称。

### `customLeadTrack` [#customleadtrack]

自定义潜在客户跟踪函数。

### `oauth` [#oauth]

Dub OAuth 配置。

### `oauth.clientId` [#oauthclientid]

Dub OAuth 的客户端 ID。

### `oauth.clientSecret` [#oauthclientsecret]

Dub OAuth 的客户端密钥。

### `oauth.pkce` [#oauthpkce]

启用 Dub OAuth 的 PKCE。

