Cloudrail — Обзор
CloudRail — это решение для интеграции API, которое ускоряет процесс интеграции сторонних API в приложение и их обслуживания. Это достигается путем предоставления библиотек для нескольких платформ с уровнями абстракции, которые объединяют похожие сервисы за общим интерфейсом.
CloudRail — Особенности
Вот список некоторых наиболее ярких функций CloudRail:
-
Унифицированный API — CloudRail объединяет несколько веб-API в единый унифицированный API. Например, функция upload () работает точно так же для Dropbox, как и для Google Drive. Вы можете легко интегрировать целые категории провайдеров, например, социальные логины, или сменить провайдера с помощью одной строки кода.
-
API Change Management — API постоянно меняются, что приводит к нарушению интеграции, неудовлетворенности клиентов и еще большему потере времени на разработку. CloudRail контролирует все API и поддерживает интеграцию. Вы получаете немедленные уведомления об изменениях, и все, что вам нужно сделать, это обновить библиотеку CloudRail до последней версии — никаких изменений кода не требуется.
-
Статистика API — Узнайте, какие API и функции чаще всего используются вашими клиентами. Получите необходимую информацию для выявления новых функций или улучшения маркетинговых кампаний.
-
Прямые данные — ни одна из ваших данных никогда не пройдет сервер CloudRail. Система не использует размещенное промежуточное ПО. Все преобразования данных происходят в библиотеке CloudRail, которая интегрирована в ваше приложение. Это означает, что нет проблем с конфиденциальностью данных, нет простоев и дополнительных SPOF.
-
OAuth Made Simple — Выполнение аутентификации OAuth — это боль. CloudRail делает авторизацию такой же простой, как добавление одной строки кода.
Унифицированный API — CloudRail объединяет несколько веб-API в единый унифицированный API. Например, функция upload () работает точно так же для Dropbox, как и для Google Drive. Вы можете легко интегрировать целые категории провайдеров, например, социальные логины, или сменить провайдера с помощью одной строки кода.
API Change Management — API постоянно меняются, что приводит к нарушению интеграции, неудовлетворенности клиентов и еще большему потере времени на разработку. CloudRail контролирует все API и поддерживает интеграцию. Вы получаете немедленные уведомления об изменениях, и все, что вам нужно сделать, это обновить библиотеку CloudRail до последней версии — никаких изменений кода не требуется.
Статистика API — Узнайте, какие API и функции чаще всего используются вашими клиентами. Получите необходимую информацию для выявления новых функций или улучшения маркетинговых кампаний.
Прямые данные — ни одна из ваших данных никогда не пройдет сервер CloudRail. Система не использует размещенное промежуточное ПО. Все преобразования данных происходят в библиотеке CloudRail, которая интегрирована в ваше приложение. Это означает, что нет проблем с конфиденциальностью данных, нет простоев и дополнительных SPOF.
OAuth Made Simple — Выполнение аутентификации OAuth — это боль. CloudRail делает авторизацию такой же простой, как добавление одной строки кода.
Бесплатная версия CloudRail может использоваться только в некоммерческих целях или для тестирования. Коммерческие пользователи должны приобрести лицензию.
Cloudrail — Android
В этом разделе рассказывается, как использовать Android SDK CloudRail.
Настроить
Самый простой способ установки — через Maven. Если вы используете Android Studio с Gradle, достаточно добавить в файл build.gradle следующее:
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();
Cloudrail — Java
В этом разделе рассказывается о том, как использовать Java SDK CloudRail.
Настроить
Самый простой способ установки — через 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();
Cloudrail — Node.js
В этом разделе рассказывается, как использовать Node.js SDK CloudRail.
Настроить
Самый простой способ установки — через 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"); }); });
Cloudrail — IOS
В этом разделе рассказывается, как использовать iOS SDK CloudRail.
Настроить
Самый простой способ установки — через CocoaPods . Просто добавьте следующее в ваш подфайл —
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
Cloudrail — Социальный вход
В этом разделе представлен пример использования социального входа в систему (веб-приложение). В этой главе представлен только обзор социального входа в систему, а в последующих главах мы покажем, как настроить его для Facebook и Twitter, но очень просто добавить дополнительные сервисы, такие как Google Plus, LinkedIn, GitHub, Instagram, Slack, Windows Live. и Yahoo. Мы будем использовать Node.js с Express на стороне сервера.
Почему социальный логин?
Одной из наиболее распространенных причин, по которой разработчики и архитекторы программного обеспечения добавляют бэкенд в свои интерфейсы, является необходимость управления пользователями. Чтобы управление пользователями работало, функции регистрации и входа являются ключевыми. В прошлом у большинства приложений была своя собственная система аутентификации, и поэтому каждому пользователю требовалось активно создавать учетную запись, предоставляя адрес электронной почты, пароль и другую информацию.
Это не только громоздко для пользователя, но и небезопасно. Многие пользователи будут использовать один и тот же пароль везде, известный как усталость пароля , и с каждой стороной, которая хранит пароль, возрастает вероятность его кражи.
В последнее время все больше и больше сервисов предлагают «социальную регистрацию» («Войти через Facebook», «Войти через GitHub» и т. Д.), Которая улучшает взаимодействие с пользователем, позволяя пользователям зарегистрироваться / войти в систему с уже существующей учетной записью на популярной платформе.
Cloudrail — Настройка
Зарегистрировать приложение CloudRail
Используйте эту ссылку для создания нового приложения (вам, возможно, придется сначала войти в систему) — https://developers.cloudrail.com. Вы можете найти свой лицензионный ключ CloudRail в сводке приложения.
Зарегистрировать приложение Facebook
Используйте эту ссылку для создания нового приложения (возможно, вам придется сначала войти в систему) — https://developers.facebook.com/apps/ . Затем нажмите кнопку «Добавить новое приложение», выберите «Основные настройки» и создайте новое приложение. В разделе панели инструментов вы найдете свой ключ приложения (идентификатор клиента) и секрет приложения (секрет клиента).
Перейдите в «Добавить продукт» и выберите «Facebook Login». Установите 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
Cloudrail — Кодирование
Создайте новый файл для кода своего сервера в созданной папке и добавьте следующее для импорта и настройки 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; }
Нам нужен способ отслеживать личность пользователя. Обычно это делается в базе данных, но для краткости этого урока мы будем использовать объект, который действует как псевдо-база данных .
Все его данные хранятся в памяти и, таким образом, теряются при перезапуске сервера.
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 различных провайдеров!