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은 비상업적 목적이나 테스트에만 사용할 수 있습니다. 상용 사용자는 라이선스를 구매해야합니다.
이 섹션에서는 CloudRail의 Android SDK 사용 방법을 소개합니다.
설정
설치하는 가장 쉬운 방법은 Maven을 사용하는 것입니다. Gradle과 함께 Android Studio를 사용하는 경우 다음을 추가하는 것으로 충분합니다.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();
이 섹션에서는 CloudRail의 Java SDK 사용 방법을 소개합니다.
설정
설치하는 가장 쉬운 방법은 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 SDK 사용 방법을 소개합니다.
설정
가장 쉬운 설치 방법은 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 SDK 사용 방법을 소개합니다.
설정
가장 쉬운 설치 방법은 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. 우리는 서버 측에서 Express와 함께 Node.js를 사용할 것입니다.
왜 소셜 로그인인가?
소프트웨어 개발자 및 설계자가 프런트 엔드에 백엔드를 추가하는 가장 일반적인 이유 중 하나는 사용자 관리가 필요하기 때문입니다. 사용자 관리가 작동하려면 등록 및 로그인 기능이 핵심입니다. 과거에는 대부분의 애플리케이션에 자체 인증 시스템이 있었기 때문에 모든 사용자는 이메일 주소, 비밀번호 및 기타 정보를 제공하여 적극적으로 계정을 만들어야했습니다.
이는 사용자에게 번거로울뿐만 아니라 안전하지 않은 것으로 악명이 높습니다. 많은 사용자가 모든 곳에서 동일한 암호를 사용합니다.password fatigue, 비밀번호를 저장 한 모든 당사자가 비밀번호를 도난 당할 가능성이 높아집니다.
최근에는 점점 더 많은 서비스가 인기있는 플랫폼에서 기존 계정으로 가입 / 로그인 할 수 있도록하여 사용자 경험을 향상시키는 "소셜 로그인"( "Facebook으로 로그인", "GitHub로 로그인"등)을 제공합니다.
CloudRail 앱 등록
이 링크를 사용하여 새 앱을 만듭니다 (먼저 로그인해야 할 수 있음)- https://developers.cloudrail.com 앱 요약에서 CloudRail 라이선스 키를 찾을 수 있습니다.
Facebook 앱 등록
이 링크를 사용하여 새 앱을 만듭니다 (먼저 로그인해야 할 수 있음)- https://developers.facebook.com/apps/. 그런 다음 '새 앱 추가'버튼을 클릭하고 '기본 설정'을 선택한 다음 새 앱을 만듭니다. 대시 보드 섹션에서 앱 키 (클라이언트 ID) 및 앱 시크릿 (클라이언트 시크릿)을 찾습니다.
'제품 추가'로 이동하여 'Facebook 로그인'을 선택하십시오. 리디렉션 URI를'http://localhost:12345/auth/redirect/facebook'.
Twitter 앱 등록
이 링크를 사용하여 새 앱을 만듭니다 (먼저 로그인해야 할 수 있음)- https://apps.twitter.com/'새 앱 만들기'버튼을 클릭하고 필요한 세부 정보를 입력합니다. '키 및 액세스 토큰'을 클릭하면 앱 키 (클라이언트 ID) 및 앱 암호 (클라이언트 암호)를 찾을 수 있습니다. 리디렉션 URI를'http://localhost:12345/auth/redirect/twitter'.
새 Node.js 프로젝트 초기화
Node.js가 설치되어 있는지 확인하고 새 폴더를 만들고 package.json 설치 Express 과 CloudRail 콘솔에서 다음 명령을 실행합니다 (또는 Unix가 아닌 OS에서 동등한 명령).
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 개의 서로 다른 제공 업체에 대한 소셜 로그인이 가능합니다!