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 เวอร์ชันฟรีสามารถใช้เพื่อวัตถุประสงค์ที่ไม่ใช่เชิงพาณิชย์หรือการทดสอบเท่านั้น ผู้ใช้เชิงพาณิชย์ต้องซื้อใบอนุญาต

ส่วนนี้จะให้ข้อมูลเบื้องต้นเกี่ยวกับวิธีใช้ Android SDK ของ CloudRail

ติดตั้ง

วิธีที่ง่ายที่สุดในการติดตั้งคือผ่าน 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();

ส่วนนี้จะให้ข้อมูลเบื้องต้นเกี่ยวกับวิธีใช้ 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();

ส่วนนี้ให้ข้อมูลเบื้องต้นเกี่ยวกับวิธีใช้ 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");
   });
});

ส่วนนี้จะให้ข้อมูลเบื้องต้นเกี่ยวกับวิธีใช้ iOS SDK ของ CloudRail

ติดตั้ง

วิธีที่ง่ายที่สุดในการติดตั้งคือ 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' ตั้งค่า Redirect URI เป็น'http://localhost:12345/auth/redirect/facebook'.

ลงทะเบียนแอพ Twitter

ใช้ลิงค์นี้เพื่อสร้างแอพใหม่ (คุณอาจต้องเข้าสู่ระบบก่อน) - https://apps.twitter.com/คลิกปุ่ม "สร้างแอปใหม่" และกรอกรายละเอียดที่จำเป็น คลิกที่ 'คีย์และโทเค็นการเข้าถึง' แล้วคุณจะพบรหัสแอป (รหัสไคลเอ็นต์) และรหัสลับของแอป (รหัสลับของลูกค้า) ตั้งค่า Redirect 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

หลังจากเข้าสู่ระบบด้วยบริการและให้สิทธิ์การเข้าถึงคุณจะเห็น "Welcome greenhorn!" หากคุณทำครั้งแรกและ "ยินดีต้อนรับกลับ [ชื่อของคุณ]" เมื่อเข้าชมติดต่อกัน

ในการรวมเข้ากับเว็บไซต์จริงตัวอย่างเช่นคุณต้องรวมโลโก้ของผู้ให้บริการไว้ที่นั่นและทำให้โลโก้เชื่อมโยงไปยัง URL ที่เกี่ยวข้อง

นอกจากนี้ฐานข้อมูลหลอกควรถูกแทนที่ด้วยของจริง เอาล่ะเข้าสู่ระบบโซเชียลสำหรับผู้ให้บริการมากถึง 9 ราย!