Cloudrail - Guida rapida

CloudRail è una soluzione di integrazione API che accelera il processo di integrazione di API di terze parti in un'applicazione e di manutenzione. Lo fa fornendo librerie per più piattaforme con livelli di astrazione che combinano servizi simili dietro un'interfaccia comune.

CloudRail - Caratteristiche

Ecco un elenco di alcune delle funzionalità più importanti di CloudRail:

  • Unified API- CloudRail raggruppa più API Web in un'unica API unificata. Ad esempio, la funzioneupload()funziona esattamente allo stesso modo per Dropbox come per Google Drive. È possibile integrare facilmente intere categorie di provider, ad esempio Social Logins, o modificare un provider con una singola riga di codice.

  • API Change Management- Le API cambiano continuamente, portando a integrazioni non funzionanti, clienti insoddisfatti e ancora più tempo di sviluppo sprecato. CloudRail monitora tutte le API e mantiene le integrazioni. Ricevi notifiche immediate sulle modifiche e tutto ciò che devi fare è aggiornare la libreria CloudRail alla versione più recente, non sono necessarie modifiche al codice.

  • API Statistics- Comprendi quali API e funzioni vengono utilizzate maggiormente dai tuoi clienti. Ottieni le informazioni necessarie di cui hai bisogno per identificare nuove funzionalità o migliorare le campagne di marketing.

  • Direct Data- Nessuno dei tuoi dati passerà mai a un server CloudRail. Il sistema non utilizza un middleware ospitato. Tutta la trasformazione dei dati avviene nella libreria CloudRail che è integrata nella tua App. Ciò significa nessun problema di riservatezza dei dati, nessun tempo di inattività e nessun SPOF aggiuntivo.

  • OAuth Made Simple- Eseguire le autenticazioni OAuth è un problema. CloudRail rende le autorizzazioni semplici come l'aggiunta di una singola riga di codice.

La versione gratuita di CloudRail può essere utilizzata solo per scopi o test non commerciali. Gli utenti commerciali devono acquistare una licenza.

Questa sezione fornisce un'introduzione su come utilizzare Android SDK di CloudRail.

Impostare

Il modo più semplice per installare è tramite Maven. Se utilizzi Android Studio con Gradle, è sufficiente aggiungere quanto segue al tuo filebuild.gradle file -

dependencies {
   compile 'com.cloudrail:cloudrail-si-android:2.8.1
}

Utilizzo

L'esempio seguente mostra come creare una nuova cartella e caricare un file dalle risorse di un'applicazione Android nella cartella appena creata su qualsiasi provider di archiviazione cloud.

java
CloudRail.setAppKey("[CloudRail License Key]");

// CloudStorage cs = new Box(context, "[clientIdentifier]", "[clientSecret]");
// CloudStorage cs = new OneDrive(context, "[clientIdentifier]", "[clientSecret]");
// CloudStorage cs = new GoogleDrive(context, "[clientIdentifier]", "[clientSecret]");
CloudStorage cs = new Dropbox(context, "[clientIdentifier]", "[clientSecret]");

new Thread() {
   @Override
   public void run() {
      cs.createFolder("/TestFolder"); // <---
      InputStream stream = null;
      
      try {
         AssetManager assetManager = getAssets();
         stream = assetManager.open("UserData.csv");
         long size = assetManager.openFd("UserData.csv").getLength();
         cs.upload("/TestFolder/Data.csv", stream, size, false); // <---
      } catch (Exception e) {
         // TODO: handle error
      } finally {
         // TODO: close stream
      }
   }
}.start();

Questa sezione fornisce un'introduzione su come utilizzare Java SDK di CloudRail.

Impostare

Il modo più semplice per installare è tramite Maven. È sufficiente aggiungere quanto segue al tuo filepom.xml file -

<dependencies>
   <dependency>
      <groupId>com.cloudrail</groupId>
      <artifactId>cloudrail-si-java</artifactId>
      <version>2.8.0</version>
   </dependency>
</dependencies>

Utilizzo

L'esempio seguente mostra come creare una nuova cartella e caricare un file dal computer locale alla cartella appena creata su qualsiasi provider di archiviazione cloud.

java
CloudRail.setAppKey("[CloudRail License Key]");

// CloudStorage cs = new Box(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
// CloudStorage cs = new OneDrive(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
// CloudStorage cs = new GoogleDrive(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
CloudStorage cs = new Dropbox(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
new Thread() {
   @Override
   public void run() {
      cs.createFolder("/TestFolder");
      InputStream stream = null;
      
      try {
         stream = getClass().getResourceAsStream("Data.csv");
         long size = new File(getClass().getResource("Data.csv").toURI()).length();
         cs.upload("/TestFolder/Data.csv", stream, size, false);
      } catch (Exception e) {
         // TODO: handle error
      } finally {
         // TODO: close stream
      }
   }
}.start();

Questa sezione fornisce un'introduzione su come utilizzare Node.js SDK di CloudRail.

Impostare

Il modo più semplice per installare è tramite NPM. Usa semplicemente il seguente comando:

npm install cloudrail-si

Utilizzo

L'esempio seguente mostra come creare una nuova cartella e caricare un file dal computer locale alla cartella appena creata su qualsiasi provider di archiviazione cloud.

javascript
const cloudrail = require("cloudrail-si");
cloudrail.Settings.setKey("[CloudRail License Key]");

// let cs = new cloudrail.services.Box(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
// let cs = new cloudrail.services.OneDrive(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
// let cs = new cloudrail.services.GoogleDrive(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
let cs = new cloudrail.services.Dropbox(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");

cs.createFolder("/TestFolder", (err) => { // <---
   if (err) throw err;
   let fileStream = fs.createReadStream("UserData.csv");
   let size = fs.statSync("UserData.csv").size;
   
   cs.upload("/TestFolder/Data.csv", fileStream, size, false, (err) => { // <---
      if (err) throw err;
      console.log("Upload successfully finished");
   });
});

Questa sezione fornisce un'introduzione su come utilizzare l'SDK iOS di CloudRail.

Impostare

Il modo più semplice per installare è tramite CocoaPods. Aggiungi semplicemente quanto segue al tuo filepodfile -

pod "cloudrail-si-ios-sdk"

Assicurati che "use_frameworks!" la bandiera è impostata ed eseguita

Pod install

Utilizzo

I seguenti esempi mostrano come scaricare un file da qualsiasi provider di archiviazione cloud in Objective-C e Swift.

objective-c
// self.service = [[CROneDrive alloc] initWithClientId:@"clientIdentifier" clientSecret:@"clientSecret" redirectUri:@"REDIRURL" state:@"CRSTATE"];
// self.service = [[CRGoogleDrive alloc] initWithClientId:@"clientIdentifier" clientSecret:@"clientSecret" redirectUri:@"REDIRURL" state:@"CRSTATE"];
// self.service = [[CRBox alloc] initWithClientId:@"clientIdentifier" clientSecret:@"clientSecret" redirectUri:@"REDIRURL" state:@"CRSTATE"];

[CRCloudRail setAppKey:@"CLOUDRAIL_API_KEY"];
self.service = [[CRDropbox alloc] initWithClientId:@"clientIdentifier" 
   clientSecret:@"clientSecret" redirectUri:@"REDIRURL" state:@"CRSTATE"];

NSInputStream * object = [self.service downloadFileWithPath:@"/mudkip.jpg"];
//READ FROM STREAM

swift
//let cloudStorage : CloudStorageProtocol = Box.init(clientId: "ClientID", clientSecret: "ClientSecret")
//let cloudStorage : CloudStorageProtocol = GoogleDrive.init(clientId: "ClientID", clientSecret: "ClientSecret")
//let cloudStorage : CloudStorageProtocol = OneDrive.init(clientId: "ClientID", clientSecret: "ClientSecret")

CRCloudRail.setAppKey("CLOUDRAIL_API_KEY")
let cloudStorage : CloudStorageProtocol = Dropbox.init(
   clientId: "ClientID", clientSecret: "ClientSecret")
do {
   let inputStream = try cloudStorage.downloadFileWithPath("/TestFolder/Data.csv")
} catch let error{
   print("An error: \(error)")
}
//READ FROM STREAM

Questa sezione presenta il caso d'uso dell'implementazione del social login per un'app (web). Questo capitolo fornisce solo una panoramica sul Social Login e nei capitoli successivi, mostreremo come configurarlo per Facebook e Twitter ma è molto facile aggiungere più servizi come Google Plus, LinkedIn, GitHub, Instagram, Slack, Windows Live e Yahoo. Useremo Node.js con Express sul lato server.

Perché Social Login?

Uno dei motivi più comuni per cui gli sviluppatori di software e gli architetti aggiungono un backend ai loro frontend è la necessità della gestione degli utenti. Affinché la gestione degli utenti funzioni, le funzionalità di registrazione e accesso sono fondamentali. In passato, la maggior parte delle applicazioni aveva il proprio sistema di autenticazione e quindi ogni utente doveva creare attivamente un account fornendo indirizzo e-mail, password e altre informazioni.

Non solo questo è ingombrante per l'utente, ma anche notoriamente insicuro. Molti utenti useranno la stessa password ovunque, nota comepassword fatiguee con ogni parte che ha la password memorizzata, aumenta la probabilità che venga rubata.

Ultimamente, sempre più servizi offrono il "social login" ("Login with Facebook", "Login with GitHub", ecc.) Che migliora l'esperienza dell'utente consentendo agli utenti di registrarsi / accedere con il proprio account già esistente su una piattaforma popolare.

Registra un'app CloudRail

Usa questo link per creare una nuova app (potresti dover prima effettuare il login) - https://developers.cloudrail.com Puoi trovare la tua chiave di licenza CloudRail nel riepilogo dell'app.

Registra un'app di Facebook

Usa questo link per creare una nuova app (potresti dover prima effettuare il login) - https://developers.facebook.com/apps/. Quindi fare clic sul pulsante "Aggiungi una nuova app", scegliere "Configurazione di base" e creare una nuova app. Nella sezione dashboard trovi la tua App Key (Client ID) e App Secret (Client Secret).

Vai su "Aggiungi prodotto" e seleziona "Accesso Facebook". Imposta l'URI di reindirizzamento su'http://localhost:12345/auth/redirect/facebook'.

Registra un'app Twitter

Usa questo link per creare una nuova app (potresti dover prima effettuare il login) - https://apps.twitter.com/Fare clic sul pulsante "Crea nuova app" e inserire i dettagli richiesti. Fai clic su "Chiavi e token di accesso" e troverai la chiave dell'app (ID client) e il segreto dell'app (segreto del client). Imposta l'URI di reindirizzamento su'http://localhost:12345/auth/redirect/twitter'.

Inizializza un nuovo progetto Node.js.

Assicurati di aver installato Node.js, crea una nuova cartella, inizializza il file package.json e installa Express e CloudRail immettendo i seguenti comandi nella console (o i comandi equivalenti su sistemi operativi non Unix):

mkdir myProject
cd myProject
npm init
npm i --save express cloudrail-si

Crea un nuovo file per il codice del tuo server nella cartella creata e aggiungi quanto segue per importare e configurare Express e CloudRail -

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

Ora continuiamo scrivendo una funzione che istanzerà i servizi che vogliamo utilizzare per l'accesso social -

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

Abbiamo bisogno di un modo per tenere traccia delle identità degli utenti. Questo viene normalmente fatto in un database ma per mantenere questo tutorial breve, useremo un oggetto che funge da filepseudo-database.

Tutti i suoi dati vengono conservati in memoria e vengono quindi persi al riavvio del server -

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

Successivamente, registriamo l'endpoint del server che gestirà l'inizio del flusso di accesso social -

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

Il servizio con cui abbiamo avviato il social login reindirizzerà al nostro server e dobbiamo gestire questo reindirizzamento.

Dopo aver ottenuto un identificatore univoco per l'utente, controlliamo se abbiamo già visto questo utente. Se sì, lo salutiamo con il suo nome. In caso contrario, otteniamo il nome dal social network e salviamo un nuovo utente -

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

Infine, abbiamo il server in ascolto sulla porta 12345 -

javascript
app.listen(12345);

Ora possiamo avviare l'applicazione e testarla nel nostro browser locale.

Se navighi verso http://localhost:12345/auth/start/facebook inizierai il flusso di accesso a Facebook.

Se navighi verso http://localhost:12345/auth/start/twitter inizierai il flusso di accesso a Twitter.

Dopo aver effettuato l'accesso con il servizio e aver concesso l'accesso, vedrai "Benvenuto novellino!" se lo fai per la prima volta e "Bentornato [il tuo nome]" in visite consecutive.

Per integrarlo in un sito Web reale, ad esempio, includeresti i loghi del fornitore di servizi lì e faresti che i loghi rimandassero ai rispettivi URL.

Inoltre, lo pseudo-database dovrebbe essere sostituito con uno reale. Ed ecco fatto, accesso social per un massimo di 9 provider diversi!