Cloudrail - Coding

Buat file baru untuk kode server Anda di folder yang dibuat dan tambahkan yang berikut ini untuk mengimpor dan menyiapkan Express dan CloudRail -

javascript
const express = require("express");
const cloudrail = require("cloudrail-si");
const app = express();
cloudrail.Settings.setKey("[CloudRail license key]");

Sekarang, kami melanjutkan dengan menulis fungsi yang akan memberi contoh layanan yang ingin kami gunakan untuk login sosial -

javascript
function makeService(name, redirectReceiver) {
   let service;
   switch (name) {
      case "twitter":
         service = new cloudrail.services.Twitter(
            redirectReceiver,
            "[Twitter Client ID]",
            "[Twitter Client Secret]",
            "http://localhost:12345/auth/redirect/twitter"
         );
         break;
      case "facebook":
         service = new cloudrail.services.Facebook(
            redirectReceiver,
            "[Facebook Client ID]",
            "[Facebook Client Secret]",
            "http://localhost:12345/auth/redirect/facebook",
            "state"
         );
         break;
      // More services from the Profile interface can be added here, 
      //the services above are just examples
      default: throw new Error("Unrecognized service");
   }
   return service;
}

Kami membutuhkan cara untuk melacak identitas pengguna. Ini biasanya dilakukan dalam database tetapi untuk membuat tutorial ini singkat, kita akan menggunakan objek yang bertindak sebagai filepseudo-database.

Semua datanya disimpan dalam memori dan dengan demikian hilang ketika server dimulai ulang -

javascript
const users = {
   records: {}
};
users.find = (id) ⇒ {
   return users.records[id];
};
users.save = (id, data) ⇒ {
   users.records[id] = data;
};

Setelah itu, kami mendaftarkan titik akhir server yang akan menangani dimulainya alur login sosial -

javascript
app.get("/auth/start/:serviceName", (req, res) ⇒ {
   let serviceName = req.params["serviceName"];
   
   let redirectReceiver = (url, state, callback) ⇒ {
      res.redirect(url);
   };
   let service = makeService(serviceName, redirectReceiver);
   service.login();
});

Layanan tempat kami memulai login sosial akan mengarahkan ke server kami dan kami perlu menangani pengalihan ini.

Setelah mendapatkan pengenal unik untuk pengguna tersebut, kami memeriksa apakah kami telah melihat pengguna ini sebelumnya. Jika ya, maka kami menyapanya dengan namanya. Jika tidak, kami mendapatkan nama dari jejaring sosial dan menyimpan pengguna baru -

javascript
app.get("/auth/redirect/:serviceName", (req, res) ⇒ {
   let serviceName = req.params["serviceName"];
   
   let redirectReceiver = (url, state, callback) ⇒ {
      callback(undefined, "http://bla.com" + req.url); 
      // The callback expects a complete URL but only the query matters
   };
	let service = makeService(serviceName, redirectReceiver);
   service.getIdentifier((err, identifier) ⇒ {
      if (err) res.status(500).send(err);
      let user = users.find(identifier);
      
      if (user) {
         res.send("Welcome back " + user.name);
      } else {
         service.getFullName((err, name) ⇒ {
            if (err) res.status(500).send(err);
            users.save(identifier, {
               name: name
            });
            res.send("Welcome greenhorn!");
         });
      }
   });
});

Terakhir, kami meminta server mendengarkan pada port 12345 -

javascript
app.listen(12345);

Kami sekarang dapat memulai aplikasi dan mengujinya di browser lokal kami.

Jika Anda menavigasi ke http://localhost:12345/auth/start/facebook Anda akan memulai alur login Facebook.

Jika Anda menavigasi ke http://localhost:12345/auth/start/twitter Anda akan memulai alur masuk Twitter.

Setelah masuk dengan layanan dan memberikan akses, Anda akan melihat "Selamat datang orang baru!" jika Anda melakukannya untuk pertama kali dan "Selamat datang kembali [nama Anda]" pada kunjungan berturut-turut.

Untuk mengintegrasikannya ke situs web yang sebenarnya, Anda akan, misalnya, menyertakan logo penyedia layanan di sana dan membuat tautan logo ke URL masing-masing.

Selain itu, pseudo-database harus diganti dengan yang asli. Dan begitulah, login sosial hingga 9 penyedia berbeda!