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 ราย!