コールアウト用のOAuth 2.0

Revised: 11 August 2021

1. Coupaを設定する

  1. 管理者は、[設定]>[インテグレーション]>[コールアウト]からコールアウトを作成、表示、編集できますが、新しいコールアウトを作成する場合にのみ新しいエンドポイントを作成できます。新しいコールアウトを作成する場合、インテグレーション管理者は以前に定義されたエンドポイントを使用するか、[新規作成]リンクを使用して新しいエンドポイントを定義できます。

  2. エンドポイント設定内でOAuth設定を使用できます。[エンドポイントの詳細]セクションで、HTTPを使用し、ホスト名、トークンURL、クライアントID、クライアントシークレットを入力してください。

  3. 詳細な文書へのリンク: https://success.coupa.com/Support/Releases/26/New_Features/BSM_Platform/Coupa_Platform/Call_Outs_Support_OAuth_2.0

2.顧客システム/ミドルウェア構成

  1. クライアントIDとシークレットを認証文字列として設定する必要があります:
    auth_string = Base64.urlsafe_encode64("#{client_id}:#{client_secret}")

  2. トークンの長さは問題になりません(テストに成功して最大1258文字を使用)

  3. アクセストークンを含む応答は、以下の形式である必要があります。

    {
    		"access_token": "",
    		"token_type": "bearer",
    		"expires_in": 86399
    }
  4. アクセストークンを含む応答は、以下の形式である必要があります。

    response = connection.post do |request|
    			request.headers[:content_type] = (content_type || 'application/x-www-form-urlencoded')
    			request.headers[:cache_control] = 'no-cache'
    			request.headers[:Authorization] = "Basic #{auth_string}"
    			request.headers[:accept] = 'application/json'
    			if content_type == 'application/json'
    				request_body = { "grant_type" => "client_credentials" }
    				request_body.merge!(scope: scope) if scope.present?
    				request.body = request_body.to_json
    			else
    				request.body = "grant_type=client_credentials"
    				request.body +="&scope="+scope if scope.present?
    			end

3.エラー処理

  1. 失敗した取引のみがコールアウトエラーセクションに表示され <customer_instance>/call_outs/<call out id>

  2. エラーとその意味

    • { "statusCode": 401, "message": "Unauthorized. Access token is missing or invalid." }:トークンを含む応答に問題があります。形式を確認してください
    • { "statusCode": 404, "message": "Resource not found" }:外部システムへのペイロードのポストに関する問題
    • {HTTP exception occured:Service::Oauth::AuthenticationManager::AuthenticationError}:ミドルウェア内の設定に問題があるため、トークンにアクセスできません。
  3. テスト/サンドボックスインスタンスで問題が発生せず、本番環境で問題が発生した場合、またはその逆の場合は、お客様にパスワードの再生成を依頼します。

4.ペイロードのサンプル(POSTMAN)

  1. Postmanペイロードファイルをダウンロードしてください

  2. postmanのインポートオプションを使用して、コレクションをインポートします。
    postman-import.png

  3. URL、ユーザー名、パスワードを追加します。
    postman-02.png

このページに表示されている一部、または全ての内容は、機械翻訳によるものです。ご了承ください。