I would like to pass the scope as parameter but up to now it failed. Please note that the credential.sas file contains : client_id,client_secret, scope as global macro variable.
I want to replace this statement which works
in='grant_type=client_credentials&scope=manage:all'
for in='grant_type=client_credentials&scope= &scope.'
But the above line those not work.
/finsys/.../TEST/Credentials.sas
%macro BearerToken(client_id, client_secret,scope);
/* Example of call: %BearerToken(&client_id., &client_secret.); */
/* For debugging only ! Reading the input values
%put reading the input values: &=client_id &=client_secret;
*/
/**** Converting the Client_id and the client_secret using base64 encoder to obtain the corresponding Basic Authentication value ***/
data _null_;
length newString $200.;
newString=cats("&client_id.",":","&client_secret.");
call symputx('Basic_Auth',put(trim(newString),$base64x300.),'g');
run;
/* For debugging only !
%put &=Basic_Auth;
*/
/* Sending the Basic Authentication value to the appropriate web site, via an API call to obtain the Bearer_token ****/
options set=SSLREQCERT="allow";
filename resp temp;
/* must include content-type/CT= option */
proc http
url="https://ca1.qualtrics.com/oauth2/token"
method='POST'
AUTH_BASIC
AUTH_NEGOTIATE
ct="application/x-www-form-urlencoded"
/* in='grant_type=client_credentials&scope=read:survey_responses read:users'*/
/*in='grant_type=client_credentials&scope=manage:all'*/
in=%str(') grant_type=client_credentials&scope= &scope %str(')
out=resp;
headers "Authorization" = "Basic &Basic_Auth.";
;
run;
/* Checking the log for the API Call */
%put &=SYS_PROCHTTP_STATUS_CODE;
data _null_;
rc=jsonpp('resp','log');
run;
/* Getting the Bearer Token */
libname auth json fileref=resp;
%global Bearertimer_start BTExpIn;
data BearerInfo;
set auth.root;
%let Bearertimer_start = %sysfunc(datetime());
call symputx('BearerToken',access_token,'g');
call symput('BTExpIn',expires_in);
call symputx('BearerTokenValid','Yes','g');
run;
%put &=BearerToken. &=BTExpIn. &=Bearertimer_start.;
%mend BearerToken;
% BearerToken(&client_id, &client_secret, &scope);
... View more