🐣
SalesForceのAccess Token取得方法
概要
SalesForceのAccessToken取得方法をまとめておく。
※refresh_tokenについてはこちらを参照
同時にLaravel + Guzzuleを利用したPHPのサンプルも載せておく。
結論
取得方法は複数あるがここでは「ユーザ名パスワードフロー」と「更新トークンフロー」の2種類を記載する。
※ 利用しているAPIのバージョンはv47.0です。
共通作業
- 接続アプリケーションの作成をする。(こちらの記事を参照)
ユーザー名・パスワードフロー
パラメータをつけて下記のURLに「POST」でアクセスする。
パラメータ | 値 |
---|---|
grant_type | password |
client_id | ***** |
client_secret | ***** |
username | **** |
password | **** |
更新トークンフロー
refresh_tokenが必要になるため、refresh_tokenをこちらの記事の方法で取得しておく。
パラメータをつけて下記のURLに「POST」でアクセスする。
パラメータ | 値 |
---|---|
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'] ?? '';
}
Discussion