Sample code for 30+ languages & platforms
Visual FoxPro

curl with OAuth2 Client Credentials

See more CURL Examples

This example shows how to run a simple CURL command with an OAuth2 access token for authorization. We use CURL to retrieve a SharePoint site ID, and Chilkat automatically fetches the OAuth2 access token using the provided credentials.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loSb
LOCAL loJsonOAuth2
LOCAL loHttpCurl
LOCAL loResponseJson
LOCAL lnStatusCode

lnSuccess = 0

* This example will run the following curl command

* curl -X GET "https://graph.microsoft.com/v1.0/sites/{{sharepoint_hostname}}:/sites/{{site_name}}" \
*   -H "Authorization: Bearer ACCESS_TOKEN" \
*   -H "Accept: application/json"

loSb = CreateObject('Chilkat.StringBuilder')
loSb.AppendLn('curl -X GET "https://graph.microsoft.com/v1.0/sites/{{sharepoint_hostname}}:/sites/{{site_name}}" \')
loSb.AppendLn('  -H "Authorization: Bearer ACCESS_TOKEN" \')
loSb.AppendLn('  -H "Accept: application/json"')

* Build the JSON that provides information for getting the OAuth2 access token using the OAuth2 client credentials flow.
loJsonOAuth2 = CreateObject('Chilkat.JsonObject')

loJsonOAuth2.UpdateString("oauth2.client_id","CLIENT_ID")
loJsonOAuth2.UpdateString("oauth2.client_secret","CLIENT_SECRET")
loJsonOAuth2.UpdateString("oauth2.scope","https://graph.microsoft.com/.default")
loJsonOAuth2.UpdateString("oauth2.token_endpoint","https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token")

loHttpCurl = CreateObject('Chilkat.HttpCurl')

* Provide the information for getting the OAuth2 access token from the token endpoint
* Note: The Authorization header specified in the curl command will be ignored and replaced using the OAuth2 access token obtained at runtime from the token endpoint.
loHttpCurl.SetAuth(loJsonOAuth2)

* The placeholders {{sharepoint_hostname}} and {{site_name}} represent variables that must be defined before execution.
* When DoYourThing runs the curl command, it automatically substitutes these placeholders with their corresponding values.
* Below are the values assigned to these variables:
loHttpCurl.SetVar("sharepoint_hostname","example.sharepoint.com")
loHttpCurl.SetVar("site_name","test")

* Run the curl command.
lnSuccess = loHttpCurl.DoYourThing(loSb.GetAsString())
IF (lnSuccess = 0) THEN
    ? loHttpCurl.LastErrorText
    RELEASE loSb
    RELEASE loJsonOAuth2
    RELEASE loHttpCurl
    CANCEL
ENDIF

loResponseJson = CreateObject('Chilkat.JsonObject')
loResponseJson.EmitCompact = 0

loHttpCurl.GetResponseJson(loResponseJson)

lnStatusCode = loHttpCurl.StatusCode
? "response status code: " + STR(lnStatusCode)

? loResponseJson.Emit()

RELEASE loSb
RELEASE loJsonOAuth2
RELEASE loHttpCurl
RELEASE loResponseJson