Visual FoxPro OneLogin: Generate OAuth2 Access Token and Refresh Token

Back to Index

Generate an access token and refresh token

Documentation: https://developers.onelogin.com/api-docs/1/oauth20-tokens/generate-tokens-2

CURL Command

curl 'https://api.us.onelogin.com/auth/oauth2/v2/token' \
-X POST \
-u onelogin_client_id:onelogin_client_secret \
-H "Content-Type: application/json" \
-d '{
  "grant_type":"client_credentials"
}'

Visual FoxPro Example

LOCAL loRest
LOCAL lnSuccess
LOCAL lnBTls
LOCAL lnPort
LOCAL lnBAutoReconnect
LOCAL loJson
LOCAL loSbRequestBody
LOCAL loSbResponseBody
LOCAL lnRespStatusCode
LOCAL loJsonResponse
LOCAL lcAccess_token
LOCAL lcCreated_at
LOCAL lnExpires_in
LOCAL lcRefresh_token
LOCAL lcToken_type
LOCAL lnAccount_id

loRest = CreateObject('Chilkat_9_5_0.Rest')

*  URL: https://api.us.onelogin.com/auth/oauth2/v2/token
lnBTls = 1
lnPort = 443
lnBAutoReconnect = 1
lnSuccess = loRest.Connect("api.us.onelogin.com",lnPort,lnBTls,lnBAutoReconnect)
IF (lnSuccess <> 1) THEN
    ? "ConnectFailReason: " + STR(loRest.ConnectFailReason)
    ? loRest.LastErrorText
    RELEASE loRest
    CANCEL
ENDIF

loRest.SetAuthBasic("onelogin_client_id","onelogin_client_secret")

loJson = CreateObject('Chilkat_9_5_0.JsonObject')
loJson.UpdateString("grant_type","client_credentials")

loRest.AddHeader("Content-Type","application/json")

loSbRequestBody = CreateObject('Chilkat_9_5_0.StringBuilder')
loJson.EmitSb(loSbRequestBody)
loSbResponseBody = CreateObject('Chilkat_9_5_0.StringBuilder')
lnSuccess = loRest.FullRequestSb("POST","/auth/oauth2/v2/token",loSbRequestBody,loSbResponseBody)
IF (lnSuccess <> 1) THEN
    ? loRest.LastErrorText
    RELEASE loRest
    RELEASE loJson
    RELEASE loSbRequestBody
    RELEASE loSbResponseBody
    CANCEL
ENDIF

lnRespStatusCode = loRest.ResponseStatusCode
IF (lnRespStatusCode >= 400) THEN
    ? "Response Status Code = " + STR(lnRespStatusCode)
    ? "Response Header:"
    ? loRest.ResponseHeader
    ? "Response Body:"
    ? loSbResponseBody.GetAsString()
    RELEASE loRest
    RELEASE loJson
    RELEASE loSbRequestBody
    RELEASE loSbResponseBody
    CANCEL
ENDIF

loJsonResponse = CreateObject('Chilkat_9_5_0.JsonObject')
loJsonResponse.LoadSb(loSbResponseBody)

lcAccess_token = loJsonResponse.StringOf("access_token")
lcCreated_at = loJsonResponse.StringOf("created_at")
lnExpires_in = loJsonResponse.IntOf("expires_in")
lcRefresh_token = loJsonResponse.StringOf("refresh_token")
lcToken_type = loJsonResponse.StringOf("token_type")
lnAccount_id = loJsonResponse.IntOf("account_id")

RELEASE loRest
RELEASE loJson
RELEASE loSbRequestBody
RELEASE loSbResponseBody
RELEASE loJsonResponse

Sample JSON Response Body

{
  "access_token": "e06720cf50b8d46185a88b499b451310b24bc86334b1251d7ea558fffec31906",
  "created_at": "2018-04-16T21:20:42.259Z",
  "expires_in": 36000,
  "refresh_token": "a7155d23818dc83624160542972b0f52672ee3b518cf92c441f7583e39c741ea",
  "token_type": "bearer",
  "account_id": 135150
}