Edited at

ExpresssでSalesforceと連携するWebアプリをサクッと作成する その1 OAuth認証編


前提条件

Node.jsのインストールは済んでいるものとします。

また、以下の設定でSalesforceの接続アプリケーションを作成済みとします。

設定名
内容

コールバックURL
http://localhost:3000/force/oauth/callback

OAuth 範囲
フルアクセス

※実運用する際には使用用途に限って接続アプリケーションを設定します。

今回の記事で最低限必要になるのは

「ユーザに代わっていつでも要求を実行が最低限必要」です。


準備

まずはexpress をインストール。

% npm install -g express-generator


プロジェクトの作成

今回は「express-force」というプロジェクトを作成します。

% express --view=pug express-force

% cd express-force
% npm install


Salesforceへ繋ぐ準備をする

salesforce-oauth2というパッケージを使用してOAuthの準備をします。

% npm install --save salesforce-oauth2

次に、routes/force.jsを作成します。


routes/force.js

var express = require('express');

var oauth2 = require('salesforce-oauth2');

var router = express.Router();

let callbackUrl = "http://localhost:3000/oauth/callback",
consumerKey = "コンシューマ鍵",
consumerSecret = "コンシューマ秘密鍵";

/* GET home page. */
router.get('/', (req, res, next) => {
//res.render('index', { title: 'Express' });

var uri = oauth2.getAuthorizationUrl({
redirect_uri: callbackUrl,
client_id: consumerKey,
scope: 'api', // 'id api web refresh_token'
// You can change loginUrl to connect to sandbox or prerelease env.
//base_url: 'https://test.my.salesforce.com'
});
return res.redirect(uri);
});

router.get('/oauth/callback', (req, res, next) => {
var authorizationCode = req.param('code');

oauth2.authenticate({
redirect_uri: callbackUrl,
client_id: consumerKey,
client_secret: consumerSecret,
code: authorizationCode,
}, function(error, payload) {

// 内容を表示する
console.log(payload);

res.render('force', {payload: JSON.stringify(payload)});
});
});

module.exports = router;


最後に、Payloadの情報を表示するためのページを用意します。


views/force.pug


extends layout

block content
h1 Payload
p #{payload}


最後に、app.jsを編集します。


app.js


// ~~前略~~

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var forceRouter = require('./routes/force'); // この行を追加

var app = express();

// ~~ 略 ~~

app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/force', forceRouter); // この行を追加


それでは、起動します。

npm start

ブラウザを開き、 http://localhost:3000/force にアクセスします。

すると、以下のように聞かれますので、「許可」を選択します。

force_auth.png

承認後、以下のようにアクセストークンを含むPayloadが表示されればログイン成功です。

payload.png

次回は、このアクセストークンを使用したSalesforce情報の取得を行います。