LoginSignup
4
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-09-14

前提条件

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情報の取得を行います。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3