Cloudrail - Guía rápida

CloudRail es una solución de integración de API que acelera el proceso de integración de API de terceros en una aplicación y su mantenimiento. Lo hace proporcionando bibliotecas para múltiples plataformas con capas de abstracción que combinan servicios similares detrás de una interfaz común.

CloudRail - Funciones

Aquí hay una lista de algunas de las características más destacadas de CloudRail:

  • Unified API- CloudRail agrupa varias API web en una única API unificada. Por ejemplo, la funciónupload()funciona exactamente igual para Dropbox que para Google Drive. Puede integrar fácilmente categorías enteras de proveedores, por ejemplo, inicios de sesión sociales, o cambiar un proveedor con una sola línea de código.

  • API Change Management- Las API cambian todo el tiempo, lo que genera integraciones rotas, clientes insatisfechos e incluso más tiempo de desarrollo perdido. CloudRail monitorea todas las API y mantiene las integraciones. Recibe notificaciones inmediatas sobre los cambios y todo lo que necesita hacer es actualizar la biblioteca de CloudRail a la última versión, no se requieren cambios de código.

  • API Statistics- Comprenda qué API y funciones utilizan más sus clientes. Obtenga la información necesaria que necesita para identificar nuevas funciones o mejorar las campañas de marketing.

  • Direct Data- Ninguno de sus datos pasará jamás a un servidor CloudRail. El sistema no utiliza un middleware alojado. Toda la transformación de datos ocurre en la biblioteca CloudRail que está integrada en su aplicación. Esto significa que no hay problemas de privacidad de datos, tiempos de inactividad ni SPOF adicionales.

  • OAuth Made Simple- Hacer autenticaciones OAuth es una molestia. CloudRail hace que las autorizaciones sean tan simples como agregar una sola línea de código.

La versión gratuita de CloudRail solo se puede utilizar para fines o pruebas no comerciales. Los usuarios comerciales deben adquirir una licencia.

Esta sección ofrece una introducción sobre cómo usar el SDK de Android de CloudRail.

Preparar

La forma más sencilla de instalar es a través de Maven. Si está utilizando Android Studio con Gradle, es suficiente agregar lo siguiente a subuild.gradle file -

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

Uso

El siguiente ejemplo muestra cómo crear una nueva carpeta y cargar un archivo desde los activos de una aplicación de Android a la carpeta recién creada en cualquier proveedor de almacenamiento en la nube.

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

Esta sección ofrece una introducción sobre cómo utilizar el SDK de Java de CloudRail.

Preparar

La forma más sencilla de instalar es a través de Maven. Basta agregar lo siguiente a supom.xml archivo -

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

Uso

El siguiente ejemplo muestra cómo crear una carpeta nueva y cargar un archivo desde la máquina local a la carpeta recién creada en cualquier proveedor de almacenamiento en la nube.

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

Esta sección ofrece una introducción sobre cómo utilizar el SDK de Node.js de CloudRail.

Preparar

La forma más sencilla de instalar es a través de NPM. Simplemente use el siguiente comando:

npm install cloudrail-si

Uso

El siguiente ejemplo muestra cómo crear una carpeta nueva y cargar un archivo desde la máquina local a la carpeta recién creada en cualquier proveedor de almacenamiento en la nube.

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

Esta sección ofrece una introducción sobre cómo usar el SDK de iOS de CloudRail.

Preparar

La forma más sencilla de instalar es a través de CocoaPods. Simplemente agregue lo siguiente a supodfile -

pod "cloudrail-si-ios-sdk"

Asegúrese de que "use_frameworks!" la bandera está configurada y corre

Pod install

Uso

Los siguientes ejemplos muestran cómo descargar un archivo de cualquier proveedor de almacenamiento en la nube en Objective-C y 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

Esta sección presenta el caso de uso de implementar el inicio de sesión social para una aplicación (web). Este capítulo proporciona solo una descripción general del inicio de sesión social y en los capítulos siguientes, mostraremos cómo configurarlo para Facebook y Twitter, pero es muy fácil agregar más servicios como Google Plus, LinkedIn, GitHub, Instagram, Slack, Windows Live. y Yahoo. Usaremos Node.js con Express en el lado del servidor.

¿Por qué Social Login?

Una de las razones más comunes por las que los desarrolladores de software y los arquitectos agregan un backend a sus frontend (s) es la necesidad de administración de usuarios. Para que la gestión de usuarios funcione, las funcionalidades de registro e inicio de sesión son la clave. En el pasado, la mayoría de las aplicaciones tenían su propio sistema de autenticación y, por lo tanto, cada usuario necesitaba crear activamente una cuenta proporcionando una dirección de correo electrónico, contraseña y otra información.

Esto no solo es engorroso para el usuario, sino también notoriamente inseguro. Muchos usuarios utilizarán la misma contraseña en todas partes, conocida comopassword fatigue, y con cada parte que tiene la contraseña almacenada, aumenta la probabilidad de que sea robada.

Últimamente, cada vez más servicios ofrecen "inicio de sesión social" ("Iniciar sesión con Facebook", "Iniciar sesión con GitHub", etc.) que mejora la experiencia del usuario al permitir que los usuarios se registren / inicien sesión con su cuenta ya existente en una plataforma popular.

Registre una aplicación de CloudRail

Utilice este enlace para crear una nueva aplicación (es posible que primero deba iniciar sesión) - https://developers.cloudrail.com Puede encontrar su clave de licencia de CloudRail en el resumen de la aplicación.

Registrar una aplicación de Facebook

Utilice este enlace para crear una nueva aplicación (es posible que primero deba iniciar sesión) - https://developers.facebook.com/apps/. Luego haga clic en el botón 'Agregar una nueva aplicación', elija 'Configuración básica' y cree una nueva aplicación. En la sección del panel, encontrará su clave de aplicación (ID de cliente) y el secreto de la aplicación (secreto de cliente).

Vaya a 'Agregar producto' y seleccione 'Iniciar sesión en Facebook'. Establezca el URI de redireccionamiento en'http://localhost:12345/auth/redirect/facebook'.

Registrar una aplicación de Twitter

Utilice este enlace para crear una nueva aplicación (es posible que primero deba iniciar sesión) - https://apps.twitter.com/Haga clic en el botón 'Crear nueva aplicación' y complete los detalles requeridos. Haga clic en 'Claves y tokens de acceso' y encontrará su clave de aplicación (ID de cliente) y el secreto de la aplicación (secreto de cliente). Establezca el URI de redireccionamiento en'http://localhost:12345/auth/redirect/twitter'.

Inicializar un nuevo proyecto de Node.js

Asegúrese de tener Node.js instalado, cree una nueva carpeta, inicialice el package.json e instalar Express y CloudRail emitiendo los siguientes comandos en la consola (o los comandos equivalentes en sistemas operativos que no son Unix):

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

Cree un nuevo archivo para su código de servidor en la carpeta creada y agregue lo siguiente para importar y configurar Express y CloudRail -

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

Ahora, continuamos escribiendo una función que instanciará los servicios que queremos usar para el inicio de sesión 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;
}

Necesitamos una forma de realizar un seguimiento de las identidades de los usuarios. Esto normalmente se hace en una base de datos, pero para que este tutorial sea breve, usaremos un objeto que actúa comopseudo-database.

Todos sus datos se guardan en la memoria y, por lo tanto, se pierden cuando se reinicia el servidor.

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

Después, registramos el punto final del servidor que manejará el inicio del flujo de inicio de sesión 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();
});

El servicio con el que hemos iniciado el inicio de sesión social redirigirá a nuestro servidor y debemos manejar esta redirección.

Después de obtener un identificador único para el usuario, verificamos si hemos visto a este usuario antes. Si es así, lo saludamos con su nombre. Si no, obtenemos el nombre de la red social y guardamos un nuevo usuario -

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

Finalmente, tenemos el servidor escuchando en el puerto 12345 -

javascript
app.listen(12345);

Ahora podemos iniciar la aplicación y probarla en nuestro navegador local.

Si navega a http://localhost:12345/auth/start/facebook iniciará el proceso de inicio de sesión de Facebook.

Si navega a http://localhost:12345/auth/start/twitter iniciará el flujo de inicio de sesión de Twitter.

Después de iniciar sesión con el servicio y otorgar acceso, verá "¡Bienvenido novato!" si lo hace por primera vez y "Bienvenido de nuevo [su nombre]" en visitas consecutivas.

Para integrarlo en un sitio web real, debería, por ejemplo, incluir allí los logotipos del proveedor de servicios y hacer que los logotipos se vinculen a las respectivas URL.

Además, la pseudo-base de datos debería ser reemplazada por una real. ¡Y listo, inicio de sesión social para hasta 9 proveedores diferentes!