0
0
Lập trình
Admin Team
Admin Teamtechmely

Tích hợp Salesforce với JavaScript: Lấy Token & Thực hiện CRUD

Đăng vào 2 ngày trước

• 7 phút đọc

Tích hợp Salesforce với JavaScript: Lấy Token & Thực hiện CRUD

Salesforce cung cấp các API REST mạnh mẽ cho phép các nhà phát triển tương tác với dữ liệu Salesforce từ các ứng dụng bên ngoài. Trong bài viết này, chúng ta sẽ tìm hiểu cách:

  • ✅ Lấy Access Token từ Salesforce bằng JavaScript
  • ✅ Thực hiện các thao tác CRUD (Tạo, Đọc, Cập nhật, Xóa) trên các bản ghi Salesforce
  • ✅ Kiểm tra mọi thứ trong một tệp HTML + JS đơn giản mà không cần công cụ bổ sung

🛠️ Điều kiện tiên quyết

Trước khi bắt đầu, bạn sẽ cần:

  • Một tài khoản Salesforce Developer Org (miễn phí: đăng ký ở đây)
  • Một Connected App được tạo trong Salesforce với OAuth được kích hoạt
  • Client ID, Client Secret, Tên người dùng, Mật khẩu và Security Token của bạn

🔑 Bước 1: Tạo một Connected App trong Salesforce

  1. Truy cập Setup → App Manager → New Connected App
  2. Nhập các thông tin sau:

OAuth Scopes:

  • Truy cập đầy đủ (full)
  • Truy cập và quản lý dữ liệu của bạn (api)
  • Thực hiện các yêu cầu thay mặt bạn
    (refresh_token, offline_access)
  1. Lưu → Sao chép Client ID và Client Secret

🔑 Bước 2: Lấy Access Token qua JavaScript

Salesforce sử dụng OAuth 2.0 cho xác thực. Trong quá trình thử nghiệm, chúng ta có thể sử dụng Password Grant Flow.

Dưới đây là cách yêu cầu một access token bằng JavaScript:

javascript Copy
function getAccessToken() {
  const body = new URLSearchParams({
    grant_type: "password",
    client_id: "YOUR_CLIENT_ID",
    client_secret: "YOUR_CLIENT_SECRET",
    username: "YOUR_SALESFORCE_USERNAME",
    password: "YOUR_PASSWORD_WITH_SECURITY_TOKEN"
  });

  return fetch("https://login.salesforce.com/services/oauth2/token", {
    method: "POST",
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: body
  })
  .then(res => res.json())
  .then(data => {
    console.log("Access Token:", data.access_token);
    return data;
  });
}

🔨 Bước 3: Thực hiện các thao tác CRUD

Khi bạn có access_token và instance_url, bạn có thể tương tác với các đối tượng Salesforce.

Dưới đây là ví dụ đầy đủ về HTML + JavaScript:

html Copy
<!DOCTYPE html>
<html>
<head>
  <title>Ví dụ CRUD Salesforce</title>
</head>
<body>
  <h2>CRUD Salesforce qua JavaScript</h2>
  <script>
    const clientId = "YOUR_CLIENT_ID";
    const clientSecret = "YOUR_CLIENT_SECRET";
    const username = "YOUR_SALESFORCE_USERNAME";
    const password = "YOUR_PASSWORD_WITH_SECURITY_TOKEN";
    const loginUrl = "https://login.salesforce.com"; 
    const apiVersion = "v59.0";

    let accessToken = "";
    let instanceUrl = "";

    // 1️⃣ Lấy Access Token
    function getAccessToken() {
      const body = new URLSearchParams({
        grant_type: "password",
        client_id: clientId,
        client_secret: clientSecret,
        username: username,
        password: password
      });

      return fetch(`${loginUrl}/services/oauth2/token`, {
        method: "POST",
        headers: { "Content-Type": "application/x-www-form-urlencoded" },
        body: body
      })
      .then(res => res.json())
      .then(data => {
        console.log("🔑 Access Token:", data);
        accessToken = data.access_token;
        instanceUrl = data.instance_url;
        return data;
      });
    }

    // 2️⃣ TẠO
    function createAccount() {
      fetch(`${instanceUrl}/services/data/${apiVersion}/sobjects/Account/`, {
        method: "POST",
        headers: {
          "Authorization": "Bearer " + accessToken,
          "Content-Type": "application/json"
        },
        body: JSON.stringify({
          Name: "JS Test Account",
          Phone: "1234567890"
        })
      })
      .then(res => res.json())
      .then(data => {
        console.log("✅ Tạo tài khoản thành công:", data);
        getAccount(data.id);
      });
    }

    // 3️⃣ ĐỌC
    function getAccount(accountId) {
      fetch(`${instanceUrl}/services/data/${apiVersion}/sobjects/Account/${accountId}`, {
        method: "GET",
        headers: { "Authorization": "Bearer " + accessToken }
      })
      .then(res => res.json())
      .then(data => {
        console.log("📖 Dữ liệu tài khoản:", data);
        updateAccount(accountId);
      });
    }

    // 4️⃣ CẬP NHẬT
    function updateAccount(accountId) {
      fetch(`${instanceUrl}/services/data/${apiVersion}/sobjects/Account/${accountId}`, {
        method: "PATCH",
        headers: {
          "Authorization": "Bearer " + accessToken,
          "Content-Type": "application/json"
        },
        body: JSON.stringify({ Phone: "9876543210" })
      })
      .then(res => {
        if (res.status === 204) {
          console.log("✏️ Tài khoản đã được cập nhật!");
          deleteAccount(accountId);
        } else {
          console.log("❌ Cập nhật thất bại");
        }
      });
    }

    // 5️⃣ XÓA
    function deleteAccount(accountId) {
      fetch(`${instanceUrl}/services/data/${apiVersion}/sobjects/Account/${accountId}`, {
        method: "DELETE",
        headers: { "Authorization": "Bearer " + accessToken }
      })
      .then(res => {
        if (res.status === 204) {
          console.log("🗑️ Tài khoản đã bị xóa!");
        } else {
          console.log("❌ Xóa thất bại");
        }
      });
    }

    // 🚀 Chạy: Đăng nhập rồi CRUD
    getAccessToken().then(() => createAccount());
  </script>
</body>
</html>

🔒 Những điều cần lưu ý về bảo mật

  • Password Grant Flow có thể làm lộ mật khẩu Salesforce của bạn → chỉ sử dụng cho thử nghiệm.
  • Đối với các ứng dụng sản xuất, luôn sử dụng OAuth Web Server Flow (mã ủy quyền).
  • Không bao giờ cam kết Client Secret hoặc Access Token lên GitHub.

🎯 Kết luận

Với chỉ vài dòng JavaScript, bạn có thể:

  • Xác thực với Salesforce
  • Tạo, Đọc, Cập nhật và Xóa các bản ghi
  • Kiểm tra tích hợp API trong trình duyệt
  • Cách tiếp cận này rất phù hợp cho việc học hỏi, tạo mẫu hoặc các tác vụ tự động nhỏ.
  • Đối với sản xuất, hãy chuyển sang các luồng OAuth an toàn và sử dụng mã phía máy chủ (Node.js, Java, .NET, v.v.).

Câu hỏi thường gặp

1. Làm thế nào để tạo một Connected App trong Salesforce?

Bạn cần truy cập vào Setup và tìm App Manager, sau đó chọn New Connected App để tạo.

2. Sự khác biệt giữa Password Grant Flow và Authorization Code Flow là gì?

Password Grant Flow không an toàn cho môi trường sản xuất vì mật khẩu được gửi qua mạng. Authorization Code Flow là lựa chọn an toàn hơn.

3. Có cách nào khác để tương tác với Salesforce không?

Có, bạn có thể sử dụng các thư viện như jsforce để đơn giản hóa việc tương tác với API Salesforce.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào