---
title: "Trình Kết Nối GitHub"
description: "Hướng dẫn tích hợp GitHub đầy đủ để đồng bộ repositories, issues, pull requests và dữ liệu contributors với Brevo qua Tajo."
url: https://tajo.io/vi/docs/connectors/custom/github/
markdown: https://tajo.io/vi/docs/connectors/custom/github.md
lang: vi-VN
robots: noindex
---

Đăng ký quyền truy cập sớm

Nhập tên và địa chỉ email công việc của bạn. Chúng tôi sẽ gửi liên kết để xác nhận yêu cầu truy cập Tajo.

# Trình Kết Nối GitHub

Trạng thái trình kết nối: Dự kiến Chưa được xây dựng. Hiện Tajo chưa chạy trình kết nối này.

| Trường nguồn | Trường đích | Giá trị mẫu |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Kết nối GitHub với Brevo qua Tajo để theo dõi hoạt động developers, đồng bộ contributors sang danh sách marketing và kích hoạt giao tiếp dựa trên sự kiện repository.

## Tổng Quan

| Thuộc Tính | Giá Trị |
| --- | --- |
| **Nền Tảng** | GitHub |
| **Danh Mục** | Tùy Chỉnh |
| **Độ Phức Tạp Thiết Lập** | Trung Bình |
| **Tích Hợp Chính Thức** | Không |
| **Dữ Liệu Đồng Bộ** | Repositories, Issues, Pull Requests, Contributors |
| **Loại API** | REST API v3 + GraphQL API v4 |
| **Xác Thực** | GitHub App hoặc Personal Access Token |

## Tính Năng

- **Đồng bộ contributors** - Ánh xạ GitHub contributors sang liên hệ Brevo
- **Theo dõi sự kiện** - Forward push, PR, và comment events sang Brevo
- **Phân tích issues** - Đồng bộ dữ liệu issues để theo dõi tương tác developers
- **Số liệu repository** - Nhập star counts, forks, và dữ liệu engagement
- **Quản lý releases** - Kích hoạt thông báo khi releases mới được publish

## Yêu Cầu

Trước khi bắt đầu, hãy đảm bảo bạn có:

1. Tài khoản GitHub hoặc GitHub Organization
2. GitHub App hoặc Personal Access Token (classic hoặc fine-grained)
3. Quyền đọc repositories mục tiêu
4. Tài khoản Brevo với quyền truy cập API
5. Tài khoản Tajo

## Xác Thực

### GitHub App (Khuyến Nghị)

GitHub Apps cung cấp xác thực tốt hơn với phạm vi repository chi tiết.

```bash
# Xác thực với GitHub App installation token
curl "https://api.github.com/repos/{owner}/{repo}/contributors" \
  -H "Authorization: token INSTALLATION_TOKEN" \
  -H "Accept: application/vnd.github.v3+json"
```

### Personal Access Token

```bash
curl "https://api.github.com/user" \
  -H "Authorization: Bearer YOUR_PERSONAL_ACCESS_TOKEN" \
  -H "Accept: application/vnd.github.v3+json"
```

Bảo Mật Token

Sử dụng fine-grained Personal Access Tokens thay vì classic tokens để kiểm soát phạm vi tốt hơn. Không bao giờ commit tokens vào source code.

#### Phạm Vi Cần Thiết

```
repo: read      - Đọc repository data (public repos)
read:user       - Đọc thông tin hồ sơ người dùng
read:org        - Đọc thành viên tổ chức
```

## Cấu Hình

### Thiết Lập Cơ Bản

```yaml
connectors:
  github:
    enabled: true
    access_token: "${GITHUB_ACCESS_TOKEN}"

    # Repositories để theo dõi
    repositories:
      - owner: "your-org"
        repo: "main-product"
      - owner: "your-org"
        repo: "open-source-lib"

    sync:
      contributors: true
      issues: false
      pull_requests: false
      releases: true
```

### Ánh Xạ Trường

```yaml
field_mapping:
  login: GITHUB_USERNAME
  email: email
  name: FULLNAME
  company: COMPANY_NAME
  location: LOCATION
  public_repos: GITHUB_REPOS
  followers: GITHUB_FOLLOWERS
```

## API Endpoints

| Phương Thức | Endpoint | Mô Tả |
| --- | --- | --- |
| `GET` | `/repos/{owner}/{repo}/contributors` | Liệt kê contributors |
| `GET` | `/users/{username}` | Lấy thông tin người dùng |
| `GET` | `/repos/{owner}/{repo}/issues` | Liệt kê issues |
| `GET` | `/repos/{owner}/{repo}/pulls` | Liệt kê pull requests |
| `GET` | `/repos/{owner}/{repo}/releases` | Liệt kê releases |
| `POST` | `/repos/{owner}/{repo}/hooks` | Tạo webhook |

## Ví Dụ Code

### Khởi Tạo Trình Kết Nối

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

await tajo.connectors.connect('github', {
  accessToken: process.env.GITHUB_ACCESS_TOKEN
});
```

### Đồng Bộ Contributors Sang Brevo

```javascript
// Đồng bộ GitHub contributors sang danh sách Brevo
await tajo.connectors.sync('github', {
  type: 'full',
  owner: 'your-org',
  repo: 'main-product',
  resources: ['contributors'],
  brevoListId: 40
});
```

Conditional Requests

GitHub API hỗ trợ conditional requests với `If-Modified-Since` hoặc `If-None-Match` headers. Tajo sử dụng chúng tự động để tránh khai thác rate limit khi không có dữ liệu thay đổi.

## Giới Hạn Tốc Độ

| Loại Xác Thực | Giới Hạn |
| --- | --- |
| Không xác thực | 60 yêu cầu/giờ |
| Personal Access Token | 5.000 yêu cầu/giờ |
| GitHub App | 15.000 yêu cầu/giờ |
| Search API | 30 yêu cầu/phút |

## Khắc Phục Sự Cố

| Sự Cố | Nguyên Nhân | Giải Pháp |
| --- | --- | --- |
| 401 Unauthorized | Token không hợp lệ hoặc hết hạn | Tạo lại Personal Access Token |
| 403 Forbidden | Vượt giới hạn tốc độ hoặc thiếu phạm vi | Kiểm tra headers `X-RateLimit-Remaining` |
| Contributors không đồng bộ | Repository riêng tư | Đảm bảo token có quyền `repo` |
| Email người dùng thiếu | Email GitHub ẩn | Cần `user:email` scope để lấy private emails |

## Tài Nguyên Liên Quan

- [Tài Liệu REST API GitHub](https://docs.github.com/en/rest)
- [GitHub Apps Documentation](https://docs.github.com/en/apps)
- [Customer Sync Skill](https://tajo.io/vi/docs/skills/data-sync/customer-sync)
