Cloudrail - Guia rápido
CloudRail é uma solução de integração de API que acelera o processo de integração de APIs de terceiros em um aplicativo e sua manutenção. Ele faz isso fornecendo bibliotecas para várias plataformas com camadas de abstração que combinam serviços semelhantes por trás de uma interface comum.
CloudRail - Recursos
Aqui está uma lista de alguns dos recursos mais importantes do CloudRail -
Unified API- CloudRail agrupa várias APIs da web em uma única API unificada. Por exemplo, a funçãoupload()funciona exatamente da mesma forma para o Dropbox e para o Google Drive. Você pode integrar facilmente categorias inteiras de provedores, por exemplo, Logins sociais, ou alterar um provedor com uma única linha de código.
API Change Management- As APIs mudam o tempo todo, levando a integrações interrompidas, clientes insatisfeitos e ainda mais perda de tempo de desenvolvimento. CloudRail monitora todas as APIs e mantém as integrações. Você recebe notificações imediatas sobre as mudanças e tudo o que você precisa fazer é atualizar a biblioteca CloudRail para a versão mais recente - nenhuma mudança de código necessária.
API Statistics- Entenda quais APIs e funções estão sendo mais usadas por seus clientes. Obtenha os insights necessários para identificar novos recursos ou melhorar as campanhas de marketing.
Direct Data- Nenhum de seus dados jamais passará por um servidor CloudRail. O sistema não usa um middleware hospedado. Todas as transformações de dados acontecem na biblioteca CloudRail que está integrada ao seu aplicativo. Isso significa que não há preocupações com a privacidade de dados, sem interrupções e sem SPOF adicional.
OAuth Made Simple- Fazer autenticações OAuth é uma dor. CloudRail torna as autorizações tão simples quanto adicionar uma única linha de código.
A versão gratuita do CloudRail só pode ser usada para fins não comerciais ou testes. Os usuários comerciais devem adquirir uma licença.
Esta seção fornece uma introdução sobre como usar o Android SDK da CloudRail.
Configuração
A maneira mais fácil de instalar é via Maven. Se você estiver usando o Android Studio com Gradle, basta adicionar o seguinte ao seubuild.gradle file -
dependencies {
compile 'com.cloudrail:cloudrail-si-android:2.8.1
}
Uso
O exemplo a seguir mostra como criar uma nova pasta e fazer upload de um arquivo dos ativos de um aplicativo Android para a pasta recém-criada em qualquer provedor de armazenamento em nuvem.
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 seção fornece uma introdução sobre como usar o Java SDK da CloudRail.
Configuração
A maneira mais fácil de instalar é via Maven. Basta adicionar o seguinte ao seupom.xml arquivo -
<dependencies>
<dependency>
<groupId>com.cloudrail</groupId>
<artifactId>cloudrail-si-java</artifactId>
<version>2.8.0</version>
</dependency>
</dependencies>
Uso
O exemplo a seguir mostra como criar uma nova pasta e fazer upload de um arquivo da máquina local para a pasta recém-criada em qualquer provedor de armazenamento em nuvem.
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 seção fornece uma introdução sobre como usar o SDK do Node.js da CloudRail.
Configuração
A maneira mais fácil de instalar é via NPM. Basta usar o seguinte comando -
npm install cloudrail-si
Uso
O exemplo a seguir mostra como criar uma nova pasta e fazer upload de um arquivo da máquina local para a pasta recém-criada em qualquer provedor de armazenamento em nuvem.
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 seção fornece uma introdução sobre como usar o SDK do iOS da CloudRail.
Configuração
A maneira mais fácil de instalar é via CocoaPods. Basta adicionar o seguinte ao seupodfile -
pod "cloudrail-si-ios-sdk"
Certifique-se de que o "use_frameworks!" sinalizador é definido e executado
Pod install
Uso
Os exemplos a seguir mostram como baixar um arquivo de qualquer provedor de armazenamento em nuvem em 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
Esta seção apresenta o caso de uso de implementação de login social para um aplicativo (web). Este capítulo fornece apenas uma visão geral sobre o Social Login e nos capítulos subsequentes, mostraremos como configurá-lo para Facebook e Twitter, mas é muito fácil adicionar mais serviços como Google Plus, LinkedIn, GitHub, Instagram, Slack, Windows Live e Yahoo. Estaremos usando Node.js com Express no lado do servidor.
Por que fazer login em redes sociais?
Um dos motivos mais comuns pelos quais os desenvolvedores e arquitetos de software adicionam um back-end a seus front-end (s) é a necessidade de gerenciamento de usuários. Para que o gerenciamento de usuários funcione, as funcionalidades de inscrição e login são a chave. No passado, a maioria dos aplicativos tinha seu próprio sistema de autenticação e, portanto, cada usuário precisava criar ativamente uma conta, fornecendo endereço de e-mail, senha e outras informações.
Isso não é apenas incômodo para o usuário, mas também notoriamente inseguro. Muitos usuários usarão a mesma senha em todos os lugares, conhecida comopassword fatigue, e com cada parte que tem a senha armazenada, aumenta a probabilidade de que ela seja roubada.
Ultimamente, mais e mais serviços oferecem “login social” (“Login com Facebook”, “Login com GitHub”, etc.) que melhora a experiência do usuário, permitindo que os usuários se inscrevam / façam login com sua conta já existente em uma plataforma popular.
Registre um aplicativo CloudRail
Use este link para criar um novo aplicativo (pode ser necessário fazer login primeiro) - https://developers.cloudrail.com Você pode encontrar sua chave de licença CloudRail no resumo do aplicativo.
Registre um aplicativo do Facebook
Use este link para criar um novo aplicativo (pode ser necessário fazer login primeiro) - https://developers.facebook.com/apps/. Em seguida, clique no botão 'Adicionar um novo aplicativo', escolha 'Configuração básica' e crie um novo aplicativo. Na seção do painel, você encontra a chave do aplicativo (ID do cliente) e o segredo do aplicativo (segredo do cliente).
Vá para 'Adicionar Produto' e selecione 'Login do Facebook'. Defina o URI de redirecionamento para'http://localhost:12345/auth/redirect/facebook'.
Registre um aplicativo do Twitter
Use este link para criar um novo aplicativo (pode ser necessário fazer login primeiro) - https://apps.twitter.com/Clique no botão 'Criar novo aplicativo' e preencha os detalhes necessários. Clique em 'Chaves e tokens de acesso' e você encontrará sua chave do aplicativo (ID do cliente) e segredo do aplicativo (segredo do cliente). Defina o URI de redirecionamento para'http://localhost:12345/auth/redirect/twitter'.
Inicialize um novo projeto Node.js
Certifique-se de ter o Node.js instalado, crie uma nova pasta, inicialize o package.json e instalar Express e CloudRail emitindo os seguintes comandos no console (ou os comandos equivalentes em sistemas operacionais não Unix) -
mkdir myProject
cd myProject
npm init
npm i --save express cloudrail-si
Crie um novo arquivo para o seu código de servidor na pasta criada e adicione o seguinte para importar e configurar Express e CloudRail -
javascript
const express = require("express");
const cloudrail = require("cloudrail-si");
const app = express();
cloudrail.Settings.setKey("[CloudRail license key]");
Agora, continuamos escrevendo uma função que irá instanciar os serviços que queremos usar para login 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;
}
Precisamos de uma maneira de rastrear as identidades dos usuários. Isso normalmente é feito em um banco de dados, mas para manter este tutorial curto, usaremos um objeto que atua como umpseudo-database.
Todos os seus dados são mantidos na memória e, portanto, perdidos quando o servidor é reiniciado -
javascript
const users = {
records: {}
};
users.find = (id) ⇒ {
return users.records[id];
};
users.save = (id, data) ⇒ {
users.records[id] = data;
};
Depois, registramos o endpoint do servidor que tratará do início do fluxo de login 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();
});
O serviço com o qual iniciamos o login social irá redirecionar para o nosso servidor e precisamos lidar com esse redirecionamento.
Depois de obter um identificador único para o usuário, verificamos se já vimos esse usuário antes. Se sim, então o saudamos com seu nome. Caso contrário, obtemos o nome da rede social e salvamos um novo usuário -
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, temos o servidor escutando na porta 12345 -
javascript
app.listen(12345);
Agora podemos iniciar o aplicativo e testá-lo em nosso navegador local.
Se você navegar para http://localhost:12345/auth/start/facebook você iniciará o fluxo de login do Facebook.
Se você navegar para http://localhost:12345/auth/start/twitter você iniciará o fluxo de login do Twitter.
Depois de fazer login com o serviço e conceder acesso, você verá "Bem-vindo novato!" se você fizer isso pela primeira vez e "Bem-vindo de volta [seu nome]" em visitas consecutivas.
Para integrá-lo em um site real, você deve, por exemplo, incluir os logotipos do provedor de serviços e criar um link para os logotipos nos respectivos URLs.
Além disso, o pseudo-banco de dados deve ser substituído por um real. E pronto, login social para até 9 provedores diferentes!