Cloudrail - Краткое руководство
CloudRail - это решение для интеграции API, которое ускоряет процесс интеграции сторонних API в приложение и их обслуживания. Это достигается путем предоставления библиотек для нескольких платформ с уровнями абстракции, которые объединяют аналогичные службы в рамках общего интерфейса.
CloudRail - Возможности
Вот список некоторых из наиболее заметных функций CloudRail:
Unified API- CloudRail объединяет несколько веб-API в единый унифицированный API. Например, функцияupload()для Dropbox работает точно так же, как и для Google Drive. Вы можете легко интегрировать целые категории поставщиков, например, социальные сети, или изменить поставщика с помощью одной строчки кода.
API Change Management- API-интерфейсы постоянно меняются, что приводит к нарушению интеграции, неудовлетворенным клиентам и еще большей потере времени на разработку. CloudRail отслеживает все API и поддерживает интеграцию. Вы получаете немедленные уведомления об изменениях, и все, что вам нужно сделать, это обновить библиотеку CloudRail до последней версии - никаких изменений кода не требуется.
API Statistics- Поймите, какие API и функции чаще всего используются вашими клиентами. Получите необходимую информацию, необходимую для определения новых функций или улучшения маркетинговых кампаний.
Direct Data- Ни одна из ваших данных никогда не пройдет через сервер CloudRail. Система не использует размещенное промежуточное ПО. Все преобразования данных происходят в библиотеке CloudRail, которая интегрирована в ваше приложение. Это означает отсутствие проблем с конфиденциальностью данных, простоев и дополнительных SPOF.
OAuth Made Simple- Выполнение аутентификации OAuth - это боль. CloudRail делает авторизацию такой же простой, как добавление одной строки кода.
Бесплатная версия CloudRail может использоваться только в некоммерческих целях или для тестирования. Коммерческие пользователи должны приобрести лицензию.
В этом разделе рассказывается, как использовать SDK CloudRail для Android.
Настроить
Самый простой способ установки - через Maven. Если вы используете Android Studio с Gradle, достаточно добавить в свойbuild.gradle file -
dependencies {
compile 'com.cloudrail:cloudrail-si-android:2.8.1
}
Применение
В следующем примере показано, как создать новую папку и загрузить файл из ресурсов приложения Android во вновь созданную папку любого поставщика облачного хранилища.
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();
В этом разделе дается введение в использование SDK CloudRail для Java.
Настроить
Самый простой способ установки - через Maven. Достаточно добавить в свойpom.xml файл -
<dependencies>
<dependency>
<groupId>com.cloudrail</groupId>
<artifactId>cloudrail-si-java</artifactId>
<version>2.8.0</version>
</dependency>
</dependencies>
Применение
В следующем примере показано, как создать новую папку и загрузить файл с локального компьютера во вновь созданную папку любого поставщика облачного хранилища.
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();
В этом разделе рассказывается, как использовать SDK CloudRail для Node.js.
Настроить
Самый простой способ установить - через NPM. Просто используйте следующую команду -
npm install cloudrail-si
Применение
В следующем примере показано, как создать новую папку и загрузить файл с локального компьютера во вновь созданную папку любого поставщика облачного хранилища.
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");
});
});
В этом разделе рассказывается, как использовать SDK CloudRail для iOS.
Настроить
Самый простой способ установить - через CocoaPods. Просто добавьте следующее в свойpodfile -
pod "cloudrail-si-ios-sdk"
Убедитесь, что "use_frameworks!" флаг установлен и запущен
Pod install
Применение
В следующих примерах показано, как загрузить файл из любого поставщика облачного хранилища в Objective-C и 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
В этом разделе представлен вариант использования социальной авторизации для (веб-приложения). В этой главе представлен только обзор входа в социальные сети, а в следующих главах мы покажем, как настроить его для Facebook и Twitter, но очень легко добавить дополнительные службы, такие как Google Plus, LinkedIn, GitHub, Instagram, Slack, Windows Live. и Yahoo. Мы будем использовать Node.js с Express на стороне сервера.
Почему социальный вход?
Одна из наиболее распространенных причин, по которой разработчики и архитекторы программного обеспечения добавляют бэкэнд к своим интерфейсам, - это необходимость управления пользователями. Для работы управления пользователями ключевыми являются функции регистрации и входа в систему. Раньше у большинства приложений была собственная система аутентификации, и поэтому каждому пользователю приходилось активно создавать учетную запись, предоставляя адрес электронной почты, пароль и другую информацию.
Это не только неудобно для пользователя, но и небезопасно. Многие пользователи будут везде использовать один и тот же пароль, известный какpassword fatigue, и с каждой стороной, у которой хранится пароль, возрастает вероятность его кражи.
В последнее время все больше и больше сервисов предлагают «социальный вход» («Вход через Facebook», «Вход через GitHub» и т. Д.), Который улучшает пользовательский опыт, позволяя пользователям регистрироваться / входить в систему с их уже существующей учетной записью на популярной платформе.
Зарегистрируйте приложение CloudRail
Используйте эту ссылку, чтобы создать новое приложение (возможно, сначала вам придется войти в систему) - https://developers.cloudrail.com Вы можете найти свой лицензионный ключ CloudRail в сводке приложения.
Зарегистрируйте приложение Facebook
Используйте эту ссылку, чтобы создать новое приложение (возможно, сначала вам придется войти в систему) - https://developers.facebook.com/apps/. Затем нажмите кнопку «Добавить новое приложение», выберите «Базовая настройка» и создайте новое приложение. В разделе панели инструментов вы найдете свой ключ приложения (идентификатор клиента) и секрет приложения (секрет клиента).
Перейдите в «Добавить продукт» и выберите «Вход в Facebook». Установите URI перенаправления на'http://localhost:12345/auth/redirect/facebook'.
Зарегистрируйте приложение Twitter
Используйте эту ссылку, чтобы создать новое приложение (возможно, сначала вам придется войти в систему) - https://apps.twitter.com/Нажмите кнопку «Создать новое приложение» и введите необходимые данные. Нажмите «Ключи и токены доступа», и вы найдете свой ключ приложения (идентификатор клиента) и секрет приложения (секрет клиента). Установите URI перенаправления на'http://localhost:12345/auth/redirect/twitter'.
Инициализировать новый проект Node.js
Убедитесь, что у вас установлен Node.js, создайте новую папку, инициализируйте package.json и установить Express а также CloudRail путем ввода следующих команд в консоли (или эквивалентных команд в операционных системах, отличных от Unix):
mkdir myProject
cd myProject
npm init
npm i --save express cloudrail-si
Создайте новый файл для кода вашего сервера в созданной папке и добавьте следующее для импорта и настройки Express а также CloudRail -
javascript
const express = require("express");
const cloudrail = require("cloudrail-si");
const app = express();
cloudrail.Settings.setKey("[CloudRail license key]");
Теперь мы продолжаем писать функцию, которая будет создавать экземпляры служб, которые мы хотим использовать для входа в социальную сеть -
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;
}
Нам нужен способ отслеживать личности пользователей. Обычно это делается в базе данных, но для краткости этого руководства мы будем использовать объект, который действует какpseudo-database.
Все его данные хранятся в памяти и, таким образом, теряются при перезапуске сервера -
javascript
const users = {
records: {}
};
users.find = (id) ⇒ {
return users.records[id];
};
users.save = (id, data) ⇒ {
users.records[id] = data;
};
После этого мы регистрируем конечную точку сервера, которая будет обрабатывать начало потока входа в социальную сеть -
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();
});
Служба, с которой мы запустили социальный вход, будет перенаправлять на наш сервер, и нам нужно обработать это перенаправление.
Получив уникальный идентификатор пользователя, мы проверяем, видели ли мы этого пользователя раньше. Если да, то приветствуем его именем. Если нет, получаем имя из социальной сети и сохраняем нового пользователя -
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!");
});
}
});
});
Наконец, у нас есть сервер, который прослушивает порт 12345 -
javascript
app.listen(12345);
Теперь мы можем запустить приложение и протестировать его в нашем локальном браузере.
Если вы перейдете к http://localhost:12345/auth/start/facebook вы запустите процесс входа в Facebook.
Если вы перейдете к http://localhost:12345/auth/start/twitter вы запустите процесс входа в Twitter.
После входа в сервис и предоставления доступа вы увидите сообщение «Добро пожаловать, новичок!» если вы делаете это в первый раз и «С возвращением, [ваше имя]» при последующих посещениях.
Чтобы интегрировать его в реальный веб-сайт, вы, например, должны включить туда логотипы поставщика услуг и сделать их ссылками на соответствующие URL-адреса.
Кроме того, псевдобаза должна быть заменена реальной. И вот, пожалуйста, вход в социальную сеть для 9 различных провайдеров!