3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ExpresssでSalesforceと連携するWebアプリをサクッと作成する その2 ユーザ情報取得編

Last updated at Posted at 2018-09-15

前提条件

前回の記事まで終わらせていること。

同じプロジェクトをそのまま使用して改造します。

OAuth認証で取得した情報を読み解く

さて、OAuthで取得したJSONは以下のようになっています。

{
	access_token: 'xxxxxxxxxxxxx',
	refresh_token: 'yyyyyyyyyyyyyyy',
	scope: 'full',
	id_token: 'zzzzzzzzzzzzzzzzz',
	instance_url: 'https://ap4.salesforce.com',
	id: 'https://login.salesforce.com/id/0000000000000/XXXXXXXXXX',
	token_type: 'Bearer',
	issued_at: '1536900000000'
}

さて、重要な部分をかいつまんで説明します

キー 説明
access_token アクセスするために必要なキー。最重要
instance_url ログインユーザがどのインスタンスにアクセスしているのか
id 基本情報を取得するためのURL
token_type 認証のタイプ。おそらくBearerになっていると思います。

本当はreflesh_tokenも重要ですが、今回は割愛します。

基本情報(ユーザ名)を取得してみよう

ユーザIDやユーザ名といった情報は、"id"で取得したURLをコールすることで取得できます。

というわけで、このURLを使用してデータを取得してみましょう。
route/force.jsのコールバック用メソッドを修正します。

route/force.js
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);
        
        // ここから変更

        http.get({
            url: payload.id, 
            headers: {
                "Authorization": payload.token_type + " " + payload.access_token
            }
        }, (error, response, body) => {

            // BodyをJSONパース
            var obj = JSON.parse(body);

            res.render('force', {
                username: obj.display_name, //ユーザ名
                payload: body //本文
            });
        });

        // ここまで変更
        
    });
});

ポイントは、ヘッダ情報に以下のように情報を加えることです。

"Authorization": payload.token_type + " " + payload.access_token

次に、force.pugを修正します。

views/force.pug
extends layout

block content
  h1 Payload
  p こんにちは、#{username} さん
  p #{payload}

さて、ここまで変更したら、改めて http://localhost:3000/force にアクセスします。

ログインしたユーザの名前は表示されましたでしょうか。

username.png

ユーザ名が表示されればデータの取得は成功です。
また、ここで取得した情報を紐解くことで、各種データを取得することができます。

実際にコールできるAPIや取得できる情報は、公式サイトであるREST API 開発者ガイドを参考にしてみてください。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?