Cloudrail - Codierung

Erstellen Sie im erstellten Ordner eine neue Datei für Ihren Servercode und fügen Sie zum Importieren und Einrichten Folgendes hinzu Express und CloudRail - -

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

Jetzt schreiben wir eine Funktion, die die Dienste instanziiert, die wir für die soziale Anmeldung verwenden möchten.

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;
}

Wir brauchen eine Möglichkeit, die Benutzeridentitäten im Auge zu behalten. Dies geschieht normalerweise in einer Datenbank. Um dieses Tutorial kurz zu halten, verwenden wir ein Objekt, das alspseudo-database.

Alle Daten werden gespeichert und gehen somit beim Neustart des Servers verloren -

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

Anschließend registrieren wir den Serverendpunkt, der den Start des sozialen Anmeldeflusses übernimmt.

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();
});

Der Dienst, mit dem wir die soziale Anmeldung gestartet haben, wird auf unseren Server umgeleitet, und wir müssen diese Umleitung durchführen.

Nachdem wir eine eindeutige Kennung für den Benutzer erhalten haben, prüfen wir, ob wir diesen Benutzer bereits gesehen haben. Wenn ja, dann begrüßen wir ihn mit seinem Namen. Wenn nicht, erhalten wir den Namen aus dem sozialen Netzwerk und speichern einen neuen Benutzer -

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!");
         });
      }
   });
});

Schließlich hat der Server Port 12345 abgehört -

javascript
app.listen(12345);

Wir können die Anwendung jetzt starten und in unserem lokalen Browser testen.

Wenn Sie zu navigieren http://localhost:12345/auth/start/facebook Sie starten den Facebook-Login-Flow.

Wenn Sie zu navigieren http://localhost:12345/auth/start/twitter Sie starten den Twitter-Anmeldefluss.

Nachdem Sie sich mit dem Dienst angemeldet und den Zugriff gewährt haben, wird "Willkommen Greenhorn!" Angezeigt. wenn Sie es zum ersten Mal tun und bei aufeinanderfolgenden Besuchen "Willkommen zurück [Ihr Name]".

Um es in eine tatsächliche Website zu integrieren, würden Sie beispielsweise die Logos des Dienstanbieters dort einfügen und die Logos mit den jeweiligen URLs verknüpfen.

Außerdem sollte die Pseudodatenbank durch eine echte ersetzt werden. Und los geht's, Social Login für bis zu 9 verschiedene Anbieter!