Rumah > hujung hadapan web > tutorial js > Javascript: Melaksanakan Log Masuk Tanpa Kata Laluan dengan Salesforce

Javascript: Melaksanakan Log Masuk Tanpa Kata Laluan dengan Salesforce

Susan Sarandon
Lepaskan: 2024-12-14 12:54:16
asal
449 orang telah melayarinya

Javascript: Implementing Passwordless Login with Salesforce

Salesforce menawarkan Aliran Log Masuk Tanpa Kata Laluan Tanpa Kepala yang membolehkan pengguna berdaftar mengakses aplikasi dengan lancar. Log masuk tanpa kata laluan sangat mesra pengguna, yang diperlukan hanyalah alamat e-mel yang aktif. Dalam siaran ini, saya akan berkongsi beberapa coretan kod untuk melaksanakan aliran log masuk Tanpa Kata Laluan dengan Salesforce.

Keperluan

Sebelum kita mula, pastikan perkara berikut:

a) Anda mempunyai akses kepada persekitaran Salesforce.

b) Anda telah mendaftarkan pengguna dan mendayakan pilihan log masuk Tanpa Kata Laluan.

Langkah Pertama: Hantar Nama Pengguna

export async function passwordlessLogin(username, captcha) {
  const payload = {
    username,
    recaptcha: captcha,
    verificationmethod: "email",
  };
  const config = {
    headers: {
      "Content-Type": "application/json",
    },
    method: "POST",
    body: JSON.stringify(payload),
  };
  const url = `${REPLACE_WITH_YOUR_SALESFORCE_CLOUD_URL}/services/auth/headless/init/passwordless/login`;

  const response = await fetch(url, config);

  const result = await response.json();

  return result;
}
Salin selepas log masuk

Ini adalah panggilan pertama kepada Salesforce. Ambil perhatian perkara berikut:

a) Anda perlu melepasi captcha. Untuk mendapatkan bantuan, lihat ReCAPTCHA v3.

b) Kaedah pengesahan ditetapkan kepada e-mel, yang memberitahu Salesforce untuk menghantar kata laluan sekali sahaja (OTP) melalui e-mel.

c) Bersama-sama dengan captcha dan kaedah pengesahan, satu-satunya parameter lain yang diperlukan ialah nama pengguna, yang sepadan dengan e-mel yang didaftarkan untuk pengguna.

Sekiranya permintaan berjaya, Salesforce akan menghantar e-mel kepada nama pengguna yang diberikan dan mengembalikan respons seperti ini:

{
  "identifier": "MFF0RWswMDAwMDIxdVRk",
  "status": "success"
}
Salin selepas log masuk

Langkah kedua: Tangkap OTP

export async function passwordlessAuthorize(identifier, code) {
  const Authorization = btoa(identifier + ":" + code);

  const config = {
    headers: {
      "Auth-Request-Type": "passwordless-login",
      "Auth-Verification-Type": "email",
      Authorization: "Basic " + Authorization,
      "Content-Type": "application/x-www-form-urlencoded",
    },
    method: "POST",
    body: new URLSearchParams({
      response_type: "code_credentials",
      client_id: "REPLACE_WITH_YOUR_CLIENT_ID",
      redirect_uri: "REPLACE_WITH_YOUR_REDIRECT_URI",
    }),
  };
  const response = await fetch(
    `${REPLACE_WITH_YOUR_SALESFORCE_CLOUD_URL}/services/oauth2/authorize`,
    config
  );

  const result = await response.json();

  return result;
}
Salin selepas log masuk

Ini adalah panggilan kedua kepada Salesforce. Berikut ialah beberapa perkara penting:

a) Pengecam ialah nilai yang dikembalikan daripada langkah satu.

b) Kod tersebut ialah OTP yang Salesforce hantar melalui e-mel.

c) Beri perhatian kepada cara pengepala Pengesahan dan Kebenaran ditakrifkan.

d) Jenis Kandungan adalah aplikasi/x-www-form-urlencoded. Perhatikan cara badan menggunakan URLSearchParams untuk pemformatan.

Jika semuanya berjalan lancar, Salesforce akan mengembalikan respons seperti ini:

{
  "code": "aPrxOPPU1bwu2d3SbsSBKLUbZop4sxhra2Tb.p3LApgVIexVmwyIGVaF6vTebI7ottVto18uuQ==",
  "sfdc_community_url": "https://site.com/application",
  "sfdc_community_id": "xxxxxxxx"
}
Salin selepas log masuk

Langkah Tiga: Kod Pertukaran untuk Token Akses

Langkah terakhir ialah menukar kod dari langkah sebelumnya untuk Token Akses. Token Akses adalah penting kerana ia membolehkan anda membuat permintaan bagi pihak pengguna. Kehadiran Token Akses membolehkan sesi pengguna.

export async function getAccessToken(code) {
  const config = {
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
    method: "POST",
    body: new URLSearchParams({
      code,
      grant_type: "authorization_code",
      client_id: "REPLACE_WITH_YOUR_CLIENT_ID",
      redirect_uri: "REPLACE_WITH_YOUR_REDIRECT_URI",
    }),
  };

  const response = await fetch(
    `${REPLACE_WITH_YOUR_SALESFORCE_CLOUD_URL}/services/oauth2/token`,
    config
  );

  const result = await response.json();

  return result;
}
Salin selepas log masuk

Respons sepatutnya kelihatan seperti ini:

{
  "access_token": "00DEj000006DHsR!AQEAQGpj5XvnBl1QQ8PI4XjygHmXAJiG7CA4Ci0mIxZcg7hO_YYZanyXPX9uelAez2905VFnE6VzhmavmnDoBOks.wzhlZHc",
  "refresh_token": "5Aep861i1Ns2kInCGgjSdz4OOTyJzqw_gZDs5f1PwqH0NfU0AKgLDAw5ptc.qADf.bVZ1aPlUKjyISe2lxx5KQ0",
  "sfdc_community_url": "https://site.com/application",
  "sfdc_community_id": "xxxxxxxx",
  "signature": "jwnfZY2G3phxCl3fJrfJu5X2AyxW7Ozsfg2BZ6bBB74=",
  "scope": "refresh_token openid user_registration_api api",
  "id_token": "...",
  "instance_url": "https://site.com/",
  "id": "https://test.salesforce.com/id/00000/11111",
  "token_type": "Bearer",
  "issued_at": "1733700157803"
}
Salin selepas log masuk

Pastikan anda menyimpan token_akses dengan selamat, dan dari sini, anda boleh membuat sesi untuk pengguna anda. Atas sebab keselamatan, sebaiknya laksanakan kaedah ini pada pelayan.

id_token ialah token JWT. Jika anda menyahkodnya, ia akan kelihatan seperti ini:

{
  "at_hash": "HTa4VEmQhCYi59WLhiL6DQ",
  "sub": "https://test.salesforce.com/id/00000/11111",
  "aud": "3MXG9j6uMOMC1DNjcltNj9xPoUi7xNbiSwPqOjmDSLfCW54f_Qf6EG3EKqUAGT6xyGPc7jqAMi4ZRw8WTIf9B",
  "iss": "https://site.com/",
  "exp": 1733702662,
  "iat": 1733702542
}
Salin selepas log masuk

Anda juga boleh menyesuaikan JWT untuk memasukkan data tambahan. Walau bagaimanapun, adalah disyorkan untuk memastikan struktur minimum dan menggunakan Token Akses untuk mengambil maklumat tambahan seperti yang diperlukan.

Kesimpulan

Log masuk tanpa kata laluan adalah mudah untuk semua orang, dan kebanyakan perkhidmatan awan, seperti Salesforce, kini menawarkan Aliran Log Masuk Tanpa Kata Laluan. Manfaatkan ciri ini untuk memudahkan proses log masuk dan meningkatkan pengalaman pengguna.

Atas ialah kandungan terperinci Javascript: Melaksanakan Log Masuk Tanpa Kata Laluan dengan Salesforce. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan