Cloudrail-クイックガイド

CloudRailは、サードパーティのAPIをアプリケーションに統合して維持するプロセスを高速化するAPI統合ソリューションです。これは、共通のインターフェイスの背後にある同様のサービスを組み合わせた抽象化レイヤーを備えた複数のプラットフォーム用のライブラリを提供することによって実現されます。

CloudRail-機能

これがCloudRailの最も顕著な機能のいくつかのリストです-

  • Unified API− CloudRailは、複数のWebAPIを単一の統合APIにバンドルします。たとえば、関数upload()DropboxでもGoogleドライブとまったく同じように機能します。ソーシャルログインなど、プロバイダーのカテゴリ全体を簡単に統合したり、1行のコードでプロバイダーを変更したりできます。

  • API Change Management− APIは常に変化し、統合の失敗、顧客の不満、さらには開発時間の浪費につながります。CloudRailはすべてのAPIを監視し、統合を維持します。変更に関する通知がすぐに届きます。必要なのは、CloudRailライブラリを最新バージョンに更新することだけです。コードを変更する必要はありません。

  • API Statistics−顧客が最も使用しているAPIと関数を理解します。新機能を特定したり、マーケティングキャンペーンを改善したりするために必要な洞察を得る。

  • Direct Data−データがCloudRailサーバーを通過することはありません。システムはホスト型ミドルウェアを使用しません。すべてのデータ変換は、アプリに統合されているCloudRailライブラリで行われます。これは、データプライバシーの懸念、ダウンタイム、追加のSPOFがないことを意味します。

  • OAuth Made Simple−OAuth認証を行うのは面倒です。CloudRailを使用すると、1行のコードを追加するだけで認証を簡単に行うことができます。

CloudRailの無料バージョンは、非営利目的またはテストにのみ使用できます。商用ユーザーはライセンスを購入する必要があります。

このセクションでは、CloudRailのAndroidSDKの使用方法を紹介します。

セットアップ

インストールする最も簡単な方法は、Mavenを使用することです。GradleでAndroidStudioを使用している場合は、以下を追加するだけで十分です。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のJavaSDKの使用方法を紹介します。

セットアップ

インストールする最も簡単な方法は、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.jsSDKの使用方法を紹介します。

セットアップ

インストールする最も簡単な方法は、 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のiOSSDKの使用方法を紹介します。

セットアップ

インストールする最も簡単な方法は、 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

このセクションでは、(Web)アプリにソーシャルログインを実装するユースケースを示します。この章ではソーシャルログインの概要を説明し、後続の章ではFacebookとTwitterに設定する方法を示しますが、Google Plus、LinkedIn、GitHub、Instagram、Slack、WindowsLiveなどのサービスを追加するのは非常に簡単です。とYahoo。サーバー側でExpressを使用してNode.jsを使用します。

なぜソーシャルログインなのか?

ソフトウェア開発者とアーキテクトがフロントエンドにバックエンドを追加する最も一般的な理由の1つは、ユーザー管理の必要性です。ユーザー管理が機能するためには、サインアップとサインインの機能が重要です。これまで、ほとんどのアプリケーションには独自の認証システムがあったため、すべてのユーザーがメールアドレス、パスワード、その他の情報を提供してアカウントを積極的に作成する必要がありました。

これはユーザーにとって煩わしいだけでなく、悪名高いほど安全ではありません。多くのユーザーは、どこでも同じパスワードを使用します。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;
}

ユーザーIDを追跡する方法が必要です。これは通常データベースで行われますが、このチュートリアルを短くするために、として機能するオブジェクトを使用します。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のログインフローを開始します。

サービスにログインしてアクセスを許可すると、「Welcomegreenhorn!」と表示されます。初めて行う場合は、連続して「おかえりなさい[あなたの名前]」と言ってください。

実際のWebサイトに統合するには、たとえば、サービスプロバイダーのロゴをそこに含め、ロゴをそれぞれのURLにリンクさせます。

また、疑似データベースは実際のデータベースに置き換える必要があります。これで、最大9つの異なるプロバイダーのソーシャルログインが完了しました。