I am trying to perform Docusign authorization using Authorization Code Grant. I tested it via POSTMAN and it works fine but when I run via my APEX application, I get a "400 Bad Request" response from the request.
Attached file contains the function used
FUNCTION obtain_access_token (
p_auth_code in varchar2,
p_integration_key in varchar2,
p_secret_key in varchar2,
p_header1 out varchar2,
p_header2 out varchar2,
p_obtain_auth_token out varchar2
) RETURN CLOB as
l_authorization VARCHAR2(4000);
l_auth_code varchar2(4000);
l_clob CLOB;
l_resp clob;
l_wallet_path varchar2(1000):='file:D:\oracle19c\owm\wallets\oracle\wallet';
l_wallet_pwd varchar2(100) := '*******';
l_keys raw (32767);
l_encode64_keys raw(32767);
l_body clob := 'grant_type=authorization_code&code=#AUTH_CODE#';
l_url varchar2(100) := 'https://account-d.docusign.com/oauth/token';
BEGIN
l_keys := utl_raw.cast_to_raw(p_integration_key ||':'||p_secret_key);
l_encode64_keys := UTL_ENCODE.BASE64_ENCODE (
r =>l_keys);
l_authorization := 'Basic ' || l_encode64_keys;
--
-- Set headers :
-- Authorization
-- Content-type
--
apex_web_service.g_request_headers(1).name := 'Authorization';
apex_web_service.g_request_headers(1).value := l_authorization ;
apex_web_service.g_request_headers(2).name := 'Content-Type';
apex_web_service.g_request_headers(2).value := 'application/x-www-form-urlencoded';
p_header1 := '{'|| 'Authorization'||','||l_authorization||'}';
p_header2 := '{'|| 'Content-Type'||','||'application/x-www-form-urlencoded'||'}';
--
-- Authorization code
--
l_auth_code := p_auth_code;
-- remove &code=
l_auth_code := substr(l_auth_code,7);
l_body := replace(l_body, '#AUTH_CODE#', l_auth_code);
--
-- Issue POST
--
l_resp := apex_web_service.make_rest_request (
p_url => l_url,
p_http_method => 'POST',
p_body => l_body,
p_wallet_path => l_wallet_path,
p_wallet_pwd => l_wallet_pwd
);
p_obtain_auth_token:= l_body;
apex_debug.info ('*** Returned from issuing a REST Request - POST');
apex_debug.info ('*** *** Response = %s',l_resp);
return l_resp;
END obtain_access_token;
Vinish Kapoor
I think you need to give network ACL access to the user/schema where you created the procedure. Below is an example:
After login as SYS run the following code:
Change yourschema with your schema name.