Sample code for 30+ languages & platforms
Visual FoxPro

SharePoint OAuth2 Client Credentials Authentication

Demonstrates how to authenticate with OAuth 2.0 using the client credentials grant type. This is for SharePoint Online which is the cloud-based service provided by Microsoft as part of Office 365. (Users access SharePoint Online through a web browser, and the service is hosted on Microsoft's servers.)

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL loJsonOAuthCC
LOCAL loSbJson
LOCAL lnStatusCode
LOCAL loJsonResp

lnSuccess = 0

* This requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.

loHttp = CreateObject('Chilkat.Http')

* Provide the information needed for Chilkat to automatically fetch the OAuth2.0 
* access token as needed.
loJsonOAuthCC = CreateObject('Chilkat.JsonObject')

* --------------------------------------------------------------------------------------------------------
* You'll need to have registered an app in Azure beforehand.
* See How to Create SharePoint App Registration for OAuth 2.0 Client Credentials
* --------------------------------------------------------------------------------------------------------

* Use the values from your App Registration in Azure.
loJsonOAuthCC.UpdateString("client_id","CLIENT_ID")
loJsonOAuthCC.UpdateString("client_secret","SECRET_VALUE")

* You'll always use this scope for client credentials, because the allowed actions
* are determined by the App Permissions defined when you registered the app in Azure.
loJsonOAuthCC.UpdateString("scope","https://graph.microsoft.com/.default")

* The token endpoint includes your tenant ID. 
loJsonOAuthCC.UpdateString("token_endpoint","https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token")

* Provide the OAuth2 information. Chilkat will use this information to automatically fetch the OAuth2 access token as needed,
loHttp.AuthToken = loJsonOAuthCC.Emit()

* Get information about all SharePoint sites.
loSbJson = CreateObject('Chilkat.StringBuilder')
lnSuccess = loHttp.QuickGetSb("https://graph.microsoft.com/v1.0/sites/getAllSites",loSbJson)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loJsonOAuthCC
    RELEASE loSbJson
    CANCEL
ENDIF

lnStatusCode = loHttp.LastStatus

? "Response status code = " + STR(lnStatusCode)

IF (lnStatusCode <> 200) THEN
    ? loSbJson.GetAsString()
    ? "Failed."
    RELEASE loHttp
    RELEASE loJsonOAuthCC
    RELEASE loSbJson
    CANCEL
ENDIF

loJsonResp = CreateObject('Chilkat.JsonObject')
loJsonResp.LoadSb(loSbJson)
loJsonResp.EmitCompact = 0

? loJsonResp.Emit()
? "Success."

* Use this online tool to generate parsing code from sample JSON: 
* Generate Parsing Code from JSON

RELEASE loHttp
RELEASE loJsonOAuthCC
RELEASE loSbJson
RELEASE loJsonResp