Cloudrail - Hướng dẫn nhanh

CloudRail là một giải pháp tích hợp API giúp tăng tốc quá trình tích hợp các API của bên thứ ba vào một ứng dụng và duy trì chúng. Nó làm như vậy bằng cách cung cấp các thư viện cho nhiều nền tảng có các lớp trừu tượng kết hợp các dịch vụ tương tự đằng sau một giao diện chung.

CloudRail - Tính năng

Dưới đây là danh sách một số tính năng nổi bật nhất của CloudRail -

  • Unified API- CloudRail gói nhiều API web thành một API thống nhất duy nhất. Ví dụ, hàmupload()hoạt động hoàn toàn giống với Dropbox cũng như đối với Google Drive. Bạn có thể dễ dàng tích hợp toàn bộ danh mục nhà cung cấp, ví dụ: Đăng nhập xã hội hoặc thay đổi nhà cung cấp bằng một dòng mã.

  • API Change Management- API thay đổi liên tục, dẫn đến tích hợp bị hỏng, khách hàng không hài lòng và thậm chí lãng phí thời gian phát triển hơn. CloudRail giám sát tất cả các API và duy trì các tích hợp. Bạn nhận được thông báo ngay lập tức về các thay đổi và tất cả những gì bạn cần làm là cập nhật thư viện CloudRail lên phiên bản mới nhất - không cần thay đổi mã.

  • API Statistics- Hiểu các API và chức năng nào đang được khách hàng của bạn sử dụng nhiều nhất. Nhận thông tin chi tiết cần thiết bạn cần để xác định các tính năng mới hoặc cải thiện các chiến dịch tiếp thị.

  • Direct Data- Không có dữ liệu nào của bạn sẽ vượt qua máy chủ CloudRail. Hệ thống không sử dụng phần mềm trung gian được lưu trữ. Tất cả chuyển đổi dữ liệu diễn ra trong thư viện CloudRail được tích hợp trong Ứng dụng của bạn. Điều này có nghĩa là không có lo ngại về quyền riêng tư dữ liệu, không có thời gian ngừng hoạt động và không có SPOF bổ sung.

  • OAuth Made Simple- Thực hiện xác thực OAuth là một điều khó khăn. CloudRail làm cho việc ủy ​​quyền đơn giản như thêm một dòng mã.

Phiên bản miễn phí của CloudRail chỉ có thể được sử dụng cho mục đích phi thương mại hoặc thử nghiệm. Người dùng thương mại phải mua giấy phép.

Phần này giới thiệu về cách sử dụng SDK Android của CloudRail.

Thiết lập

Cách dễ nhất để cài đặt là thông qua Maven. Nếu bạn đang sử dụng Android Studio với Gradle, chỉ cần thêm phần sau vàobuild.gradle file -

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

Sử dụng

Ví dụ sau đây cho thấy cách tạo thư mục mới và tải tệp từ nội dung của ứng dụng Android lên thư mục mới được tạo trên bất kỳ nhà cung cấp dịch vụ lưu trữ đám mây nào.

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

Phần này giới thiệu về cách sử dụng Java SDK của CloudRail.

Thiết lập

Cách dễ nhất để cài đặt là thông qua Maven. Chỉ cần thêm những thứ sau vào của bạn là đủpom.xml tập tin -

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

Sử dụng

Ví dụ sau cho thấy cách tạo thư mục mới và tải tệp từ máy cục bộ lên thư mục mới tạo trên bất kỳ nhà cung cấp dịch vụ lưu trữ đám mây nào.

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

Phần này giới thiệu về cách sử dụng SDK Node.js của CloudRail.

Thiết lập

Cách dễ nhất để cài đặt là thông qua NPM. Chỉ cần sử dụng lệnh sau:

npm install cloudrail-si

Sử dụng

Ví dụ sau cho thấy cách tạo thư mục mới và tải tệp từ máy cục bộ lên thư mục mới tạo trên bất kỳ nhà cung cấp dịch vụ lưu trữ đám mây nào.

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

Phần này giới thiệu về cách sử dụng SDK iOS của CloudRail.

Thiết lập

Cách dễ nhất để cài đặt là thông qua CocoaPods. Chỉ cần thêm phần sau vàopodfile -

pod "cloudrail-si-ios-sdk"

Đảm bảo rằng "use_frameworks!" cờ được đặt và chạy

Pod install

Sử dụng

Các ví dụ sau đây cho thấy cách tải xuống tệp từ bất kỳ nhà cung cấp dịch vụ lưu trữ đám mây nào trong Objective-C và 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

Phần này trình bày trường hợp sử dụng của việc triển khai đăng nhập xã hội cho một ứng dụng (web). Chương này chỉ cung cấp một cái nhìn tổng quan về Đăng nhập xã hội và trong các chương tiếp theo, chúng tôi sẽ hướng dẫn cách thiết lập nó cho Facebook và Twitter nhưng rất dễ dàng để thêm các dịch vụ khác như Google Plus, LinkedIn, GitHub, Instagram, Slack, Windows Live và Yahoo. Chúng tôi sẽ sử dụng Node.js với Express ở phía máy chủ.

Tại sao đăng nhập xã hội?

Một trong những lý do phổ biến nhất khiến các nhà phát triển phần mềm và kiến ​​trúc sư thêm phần phụ trợ vào (các) giao diện người dùng của họ là nhu cầu quản lý người dùng. Để quản lý người dùng hoạt động, chức năng đăng ký và đăng nhập là chìa khóa. Trước đây, hầu hết các ứng dụng đều có hệ thống xác thực riêng và do đó mọi người dùng cần chủ động tạo tài khoản bằng cách cung cấp địa chỉ email, mật khẩu và các thông tin khác.

Điều này không chỉ gây cồng kềnh cho người dùng mà còn nổi tiếng là không an toàn. Nhiều người dùng sẽ sử dụng cùng một mật khẩu ở mọi nơi, được gọi làpassword fatiguevà với mọi bên có mật khẩu được lưu trữ, xác suất nó bị đánh cắp sẽ tăng lên.

Cuối cùng, ngày càng nhiều dịch vụ cung cấp “đăng nhập xã hội” (“Đăng nhập bằng Facebook”, “Đăng nhập bằng GitHub”, v.v.) để cải thiện trải nghiệm người dùng bằng cách cho phép người dùng đăng ký / đăng nhập bằng tài khoản đã có của họ trên một nền tảng phổ biến.

Đăng ký ứng dụng CloudRail

Sử dụng liên kết này để tạo một ứng dụng mới (bạn có thể phải đăng nhập trước) - https://developers.cloudrail.com Bạn có thể tìm thấy khóa cấp phép CloudRail của mình trong phần tóm tắt ứng dụng.

Đăng ký ứng dụng Facebook

Sử dụng liên kết này để tạo một ứng dụng mới (bạn có thể phải đăng nhập trước) - https://developers.facebook.com/apps/. Sau đó nhấp vào nút 'Thêm ứng dụng mới', chọn 'Thiết lập cơ bản' và tạo ứng dụng mới. Trong phần trang tổng quan, bạn tìm thấy Khoá ứng dụng (Client ID) và Bí mật ứng dụng (Client Secret).

Đi tới 'Thêm sản phẩm' và chọn 'Đăng nhập Facebook'. Đặt URI chuyển hướng thành'http://localhost:12345/auth/redirect/facebook'.

Đăng ký ứng dụng Twitter

Sử dụng liên kết này để tạo một ứng dụng mới (bạn có thể phải đăng nhập trước) - https://apps.twitter.com/Nhấp vào nút 'Tạo ứng dụng mới' và điền vào các chi tiết cần thiết. Nhấp vào 'Chìa khóa và Mã thông báo truy cập' và bạn sẽ tìm thấy Khóa ứng dụng (ID khách hàng) và Bí mật ứng dụng (Bí mật ứng dụng). Đặt URI chuyển hướng thành'http://localhost:12345/auth/redirect/twitter'.

Khởi tạo một dự án Node.js mới

Đảm bảo rằng bạn đã cài đặt Node.js, tạo một thư mục mới, khởi tạo package.json và cài đặt ExpressCloudRail bằng cách đưa ra các lệnh sau trong bảng điều khiển (hoặc các lệnh tương đương trên hệ điều hành không phải Unix) -

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

Tạo tệp mới cho mã máy chủ của bạn trong thư mục đã tạo và thêm tệp sau để nhập và thiết lập ExpressCloudRail -

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

Bây giờ, chúng tôi tiếp tục bằng cách viết một hàm sẽ khởi tạo các dịch vụ mà chúng tôi muốn sử dụng để đăng nhập mạng xã hội -

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

Chúng tôi cần một cách để theo dõi danh tính người dùng. Điều này thường được thực hiện trong cơ sở dữ liệu nhưng để giữ cho hướng dẫn này ngắn gọn, chúng tôi sẽ sử dụng một đối tượng hoạt động như mộtpseudo-database.

Tất cả dữ liệu của nó được lưu trong bộ nhớ và do đó sẽ bị mất khi máy chủ khởi động lại -

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

Sau đó, chúng tôi đăng ký điểm cuối máy chủ sẽ xử lý việc bắt đầu luồng đăng nhập xã hội -

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

Dịch vụ mà chúng tôi đã bắt đầu đăng nhập xã hội sẽ chuyển hướng đến máy chủ của chúng tôi và chúng tôi cần xử lý chuyển hướng này.

Sau khi nhận được số nhận dạng duy nhất cho người dùng, chúng tôi kiểm tra xem chúng tôi đã từng gặp người dùng này chưa. Nếu có, thì chúng tôi chào anh ta bằng tên của anh ta. Nếu không, chúng tôi lấy tên từ mạng xã hội và lưu một người dùng mới -

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

Cuối cùng, chúng tôi có máy chủ lắng nghe trên cổng 12345 -

javascript
app.listen(12345);

Bây giờ chúng tôi có thể khởi động ứng dụng và kiểm tra nó trong trình duyệt cục bộ của chúng tôi.

Nếu bạn điều hướng đến http://localhost:12345/auth/start/facebook bạn sẽ bắt đầu quy trình đăng nhập Facebook.

Nếu bạn điều hướng đến http://localhost:12345/auth/start/twitter bạn sẽ bắt đầu luồng đăng nhập Twitter.

Sau khi đăng nhập với dịch vụ và cấp quyền truy cập, bạn sẽ thấy thông báo "Chào mừng greenhorn!" nếu bạn làm điều đó lần đầu tiên và "Chào mừng bạn trở lại [tên của bạn]" trong những lần truy cập liên tiếp.

Ví dụ: để tích hợp nó vào một trang web thực tế, bạn sẽ bao gồm các biểu trưng của nhà cung cấp dịch vụ và làm cho các biểu trưng liên kết đến các URL tương ứng.

Bên cạnh đó, cơ sở dữ liệu giả nên được thay thế bằng cơ sở dữ liệu thực. Và bạn đã thực hiện, đăng nhập mạng xã hội cho tối đa 9 nhà cung cấp khác nhau!