PureBasic
PureBasic
Auth0 Server-to-Server Access Token (Client Credentials flow)
See more HTTP Examples
Demonstrates how to obtain an Auth0 access token using client credentials (client_id and client_secret).This is just a matter of duplicating this CURL command:
curl --request POST
--url 'https://chilkat.auth0.com/oauth/token' \
--header 'content-type: application/json' \
--data '{"grant_type":"client_credentials","client_id": "xxxx","client_secret": "xxxx","audience": "https://api.example.com/geocoding/v1/"}'
Chilkat PureBasic Downloads
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; We want to duplicate this curl command:
;
; curl --request POST
; --url 'https://chilkat.auth0.com/oauth/token' \
; --header 'content-type: application/json' \
; --data '{"grant_type":"client_credentials","client_id": "my_client_id","client_secret": "my_client_secret","audience": "https://api.example.com/geocoding/v1/"}'
; Build the JSON body of the request.
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckUpdateString(json,"grant_type","client_credentials")
CkJsonObject::ckUpdateString(json,"client_id","AUTH0-CLIENT-ID")
CkJsonObject::ckUpdateString(json,"client_secret","AUTH0-CLIENT-SECRET")
CkJsonObject::ckUpdateString(json,"audience","https://api.example.com/geocoding/v1/")
; IMPORTANT: You would use your own url. You would not use "chilkat.auth0.com".
; Instead you would use "your_name.auth0.com"
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
resp.i = CkHttpResponse::ckCreate()
If resp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkHttp::ckHttpJson(http,"POST","https://chilkat.auth0.com/oauth/token",json,"application/json",resp)
If success = 0
Debug CkHttp::ckLastErrorText(http)
CkJsonObject::ckDispose(json)
CkHttp::ckDispose(http)
CkHttpResponse::ckDispose(resp)
ProcedureReturn
EndIf
; A 200 response status code indicates success. In the success case, the response body
; contains the JSON access token, such as:
; {
; "access_token": "eyJz93a...k4laUWw",
; "token_type":"Bearer",
; "expires_in":86400
; }
;
Debug "response status code = " + Str(CkHttpResponse::ckStatusCode(resp))
; The repsonse is JSON if successful and also JSON for errors.
jsonResp.i = CkJsonObject::ckCreate()
If jsonResp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::setCkEmitCompact(jsonResp, 0)
CkJsonObject::ckLoad(jsonResp,CkHttpResponse::ckBodyStr(resp))
If CkHttpResponse::ckStatusCode(resp) <> 200
; The response body contains error information in JSON format.
Debug CkJsonObject::ckEmit(jsonResp)
; An example of an error response:
; {
; "error": "access_denied",
; "error_description": "Client is not authorized to access \"https://api.example.com/geocoding/v1/\". You might probably want to create a \"client-grant\" associated to this API. See: https://auth0.com/docs/api/v2#!/Client_Grants/post_client_grants"
; }
CkJsonObject::ckDispose(json)
CkHttp::ckDispose(http)
CkHttpResponse::ckDispose(resp)
CkJsonObject::ckDispose(jsonResp)
ProcedureReturn
EndIf
Debug "Success!"
Debug CkJsonObject::ckEmit(jsonResp)
; A successful JSON response body looks like this:
; {
; "access_token": "eyJz93a...k4laUWw",
; "token_type":"Bearer",
; "expires_in":86400
; }
CkJsonObject::ckDispose(json)
CkHttp::ckDispose(http)
CkHttpResponse::ckDispose(resp)
CkJsonObject::ckDispose(jsonResp)
ProcedureReturn
EndProcedure