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 설치 ExpressCloudRail 콘솔에서 다음 명령을 실행합니다 (또는 Unix가 아닌 OS에서 동등한 명령).

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

생성 된 폴더에 서버 코드에 대한 새 파일을 생성하고 다음을 추가하여 가져 오기 및 설정 ExpressCloudRail

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 개의 서로 다른 제공 업체에 대한 소셜 로그인이 가능합니다!