SalesForceのAccess Token取得方法

2 min read読了の目安(約1800字

概要

SalesForceのAccessToken取得方法をまとめておく。
※refresh_tokenについてはこちらを参照
同時にLaravel + Guzzuleを利用したPHPのサンプルも載せておく。

結論

取得方法は複数あるがここでは「ユーザ名パスワードフロー」と「更新トークンフロー」の2種類を記載する。
※ 利用しているAPIのバージョンはv47.0です。

共通作業

ユーザー名・パスワードフロー

パラメータをつけて下記のURLに「POST」でアクセスする。

https://login.salesforce.com/services/oauth2/token
パラメータ
grant_type password
client_id *****
client_secret *****
username ****
password ****

更新トークンフロー

refresh_tokenが必要になるため、refresh_tokenをこちらの記事の方法で取得しておく。
パラメータをつけて下記のURLに「POST」でアクセスする。

https://login.salesforce.com/services/oauth2/token
パラメータ
grant_type refresh_token
client_id *****
client_secret *****
refresh_token *****

Laravel + Guzzleサンプル

Laravelを利用して書いていますが、機能としてはenvぐらいしか使っていないので生PHPでも普通にいけます。
Guzzleを利用したサンプルと思っていただければと思います。

    private function refreshSFAccessToken(): string
    {
        $path = '/services/oauth2/token';
        $url  = 'https://login.salesforce.com' . $path;

        $params = [
            'form_params' => [
                'grant_type' => 'refresh_token',
                'client_id'  => env('SF_ID'),
                'client_secret' => env('SF_SECRET'),
                'refresh_token' => env('SF_REFRESH_TOKEN'),
            ]
        ];

        $client  = new \GuzzleHttp\Client();
        $resJson = $client->request('POST', $url, $params)->getBody()->getContents();
        $resAry  = json_decode($resJson, true);

        return $resAry['access_token'] ?? '';
    }