SalesforceでOAuthアクセストークンを取得する

green pine tree leaves Salesforce開発
Photo by Oleksandr Tiupa on Pexels.com

この記事では、Salesforce で OAuth アクセストークンとリフレッシュトークンを取得する方法について記述しています。

接続アプリケーションの作成

まずは Salesforce で接続アプリケーションを作成します。

「設定」→「アプリケーションマネージャ」から、「新規接続アプリケーション」をクリックします。

基本情報を入力した上で、「OAuth 設定の有効化」を ON にして OAuth 設定を入力します。

今回はとりあえずアクセストークンを取得したいだけなのでコールバックURLはてきとうに。
また、リフレッシュトークンも取得したいので OAuth 範囲に「いつでも要求を実行 (refresh_token, offline_access) 」を含めておきます。

接続アプリケーションを作成したら、コンシューマ鍵とコンシューマの秘密を確認しておきます(後で使います)。
アプリの参照画面で、「コンシューマの詳細を管理」ボタンをクリックすると確認できます。

認証フローについて

アクセストークンを取得する方法として、「ユーザ名パスワードフロー」と「OAuth 2.0 Web サーバフロー」があるのですが、この記事では「OAuth 2.0 Web サーバフロー」について記述します

「ユーザ名パスワードフロー」は cURL のみでアクセストークンを取得できるので手軽ではあるのですが、

  • 要求にログイン情報を含めるためセキュリティ的なリスクがある
  • リフレッシュトークンを取得できない

などのデメリットがあるため実用的ではないと思います。

OAuth 2.0 Web サーバフロー

認証コードの取得

ブラウザで以下のURLを入力します。

  • 私のドメインは、「設定」→「私のドメイン」から確認できます
  • 接続アプリケーションのリダイレクトURLはエンコードしてください(例:https://localhost → https:%2F%2Flocalhost)
https://["私のドメイン"の値]/services/oauth2/authorize?
client_id=[接続アプリケーションのコンシューマ鍵の値]&
redirect_uri=[接続アプリケーションのリダイレクトURLの値]&
response_type=code

すると「アクセスを許可しますか?」という画面になるので許可します。

許可すると、リダイレクトされてURLが
[リダイレクトURL]/?code=[認証コード]
という形になっていると思います。
これで認証コードが取得できました。

アクセストークンの取得

取得した認証コードを使用して、アクセストークンを取得します。

私は cURL を使って以下のように取得しましたが、同様の形式で HTTP POSTリクエストができれば、やり方は何でも良いです。

  • 認証コードはデコードして下さい(最後の %3D%3D の部分を == に変えるだけで良いと思います)
curl -v https://["私のドメイン"の値]/services/oauth2/token 
-d 'grant_type=authorization_code' 
-d 'code=[認証コードの値]' 
-d 'client_id=[接続アプリケーションのコンシューマ鍵の値]' 
-d 'client_secret=[接続アプリケーションのコンシューマの秘密の値]' 
-d 'redirect_uri=[接続アプリケーションのリダイレクトURLの値]' 
-H "Content-Type:application/x-www-form-urlencoded"

成功すると、以下のようなレスポンスを取得できます。

{
  "access_token": ●●●,
  "refresh_token": ▲▲▲,
  ...
}

これでアクセストークンとリフレッシュトークンを取得できました。

コメント

タイトルとURLをコピーしました