- Miller Rhodes
- PowerBuilder
- Friday, 22 April 2022 10:52 PM UTC
The code below is what I decided to go with after reading all of the cases in here and the help. I am trying to get my token using a client id and secret and then use it to access the data.
On the Method when I try GET then I get a 200 code but nothing comes back in the Body. If I use a POST then I get a 401 error.
Basically my ltr_Response.GetAccessToken() just returns an empty string.
A developer on our project helped me set up Postman and the API works in Postman but I have no idea what information I can use from there in order to get this to work.
OAuthClient loac_Client
TokenRequest ltr_Request
TokenResponse ltr_Response
OAuthRequest loar_Request
ResourceResponse lrr_Response
String ls_AccessToken
String ls_Body, ls_type, ls_description, ls_state, ls_uri
Long ll_return
String ls_ClientID, ls_Secret, ls_Url
// Setup the arguments for your token request
ls_Url = "https://login.microsoftonline.com - - -TOKEN URL";
ls_ClientID = "Can't Post My Client Id but its here"
ls_Secret = "This is where my SECREt goes"
// Now do your token request
loac_Client = Create OAuthClient
//Step 1: Get the RESTful server access token.
ltr_Request.ClearParams()
ltr_Request.tokenlocation = ls_Url
ltr_Request.granttype = "client_credentials"
ltr_Request.clientid = ls_ClientID
ltr_Request.clientsecret = ls_Secret
ltr_Request.Method = "POST"
ltr_Request.secureprotocol = 0
ltr_Request.scope = "api://gms-d-reckon-claims-api/.default"
ltr_Request.granttype = "client_credentials"
ll_Return = loac_Client.AccessToken( ltr_Request, ltr_Response )
If ll_Return = 1 then
// The Actual Http Call was successful
long ll_ResponseStatusCode
string ls_ResponseStatusText
ll_ResponseStatusCode = ltr_Response.GetStatusCode()
ls_ResponseStatusText = ltr_Response.GetStatusText()
ltr_Response.GetBody(ls_Body)
if ll_ResponseStatusCode = 200 Then
// The Token Request was successful
ls_AccessToken = ltr_Response.GetAccessToken()
MessageBox('Token', ls_AccessToken)
else
// The Token Request returned an error. This displays the actual html returned
MessageBox('Token Error', string(ll_ResponseStatusCode) + ' ' + ls_ResponseStatusText + '~r~n' + ls_Body)
// You can have a look at this function. When the secret is wrong ls_type returns "invalid_client"
ll_Return = ltr_Response.GetTokenError(ls_type, ls_description, ls_uri, ls_state)
MessageBox( "AccessToken Failed", "Return :" + String ( ll_return ) + "~r~n" + ls_type )
end if
Else
// The Actual Http Call was unsuccessful
MessageBox( "AccessToken Call Failed", "Return :" + String ( ll_return ))
// From help file the error will be one of the following:
// -1 -- A general error occurred
// -2 -- Invalid URL
// -3 -- Cannot connect to the Internet
// -4 -- Timeout
End If
If IsValid ( loac_Client ) Then DesTroy ( loac_Client )
Find Questions by Tag
Helpful?
If a reply or comment is helpful for you, please don’t hesitate to click the Helpful button. This action is further confirmation of their invaluable contribution to the Appeon Community.