前提条件
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 にアクセスします。
すると、以下のように聞かれますので、「許可」を選択します。
承認後、以下のようにアクセストークンを含むPayloadが表示されればログイン成功です。
次回は、このアクセストークンを使用したSalesforce情報の取得を行います。