コールアウトのためのOAuth 2.0
1.Coupaの設定
-
管理者は、[設定] > [統合] > [コールアウト]からコールアウトを作成、表示、および編集できますが、新しいコールアウトを作成するときにのみ新しいエンドポイントを作成できます。新しいコールアウトを作成するときは、統合管理者は以前に定義されたエンドポイントを使用するか、[新規作成]リンクを使用して新しいエンドポイントを定義できます。
-
OAuth設定は、エンドポイント構成内で利用できます。[エンドポイントの詳細]セクションでは、HTTPを使用し、ホスト名、トークンURL、クライアントID、およびクライアントシークレットを提供してください。
-
詳細なドキュメントへのリンク: https://success.coupa.com/Support/Releases/26/New_Features/BSM_Platform/Coupa_Platform/Call_Outs_Support_OAuth_2 .0
2.カスタマーシステム/ミドルウェア構成
-
クライアントIDとシークレットを認証文字列として設定する必要があります:
auth_string = Base64.urlsafe_encode64 ("#{ client_id }:#{ client_secret }")
-
トークンの長さは問題にしないでください(最大1258文字のテストに成功しました)
-
アクセストークンを含む応答は、次の形式である必要があります。
{ "access_token ":"アクセストークン", "token_type ":"ベアラー", "expires_in ":86399 }
-
アクセストークンを含む応答は、次の形式である必要があります。
response = connection.post do | request | request.headers [: content_type] = (content_type || 'application/x - www - form - urlencoded ') request.headers [: cache_control] = 'キャッシュなし' request.headers [: Authorization] = "基本#{ auth_string }" request.headers [: accept] = 'application/json' if content_type == 'application/json' request_body = {" grant_type "=>" client_credentials "} request_body.merge !( scope: scope) scope.present? request.body = request_body.to_json else request.body =" grant_type = client_credentials " request.body +="& scope ="+ scope if scope.present? 終了
3.エラー処理
-
失敗したトランザクションのみがコールアウトエラーセクション
<customer_instance>/call_outs/に表示されます<call out id>
-
エラーとその意味
{" statusCode ": 401 ," message ":"権限がありません。アクセストークンが見つからないまたは無効です。
"}:トークンが含まれる応答に問題がある場合は、形式を確認してください{" statusCode ": 404 ," message ":"リソースが見つかりませんでした
"}:外部システムへのペイロードの投稿に関する問題{HTTP例外が発生しました: Service:: Oauth:: AuthenticationManager:: AuthenticationError
}:ミドルウェア内の構成の問題、トークンにアクセスできません。
-
テスト/サンドボックスインスタンスでは課題に直面していないが、本番環境では課題に直面している場合、または本番環境では課題に直面している場合は、顧客にパスワードの再生成を依頼してください。
4.検体ペイロード(郵便配達員)
-
Postmanのインポートオプションを使用してコレクションをインポートします。
-
URL、ユーザー名、パスワードを追加します。
このページに表示されている一部、または全ての内容は、機械翻訳によるものです。ご了承ください。