Swift
Swift
Azure REST API Access Token
See more Azure OAuth2 Examples
Demonstrates how to request an Azure REST API OAUTH2 access token.Note: In order to access resources a Service Principal needs to be created in your Tenant. It is really convenient to do it via AZ CLI:
az ad sp create-for-rbac --name [APP_NAME] --password [CLIENT_SECRET]
Chilkat Swift Downloads
func chilkatTest() {
var success: Bool = false
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
let rest = CkoRest()!
// URL: https://login.microsoftonline.com/TENANT_ID/oauth2/token
var bTls: Bool = true
var port: Int = 443
var bAutoReconnect: Bool = true
success = rest.connect(hostname: "login.microsoftonline.com", port: port, tls: bTls, autoReconnect: bAutoReconnect)
if success != true {
print("ConnectFailReason: \(rest.connectFailReason.intValue)")
print("\(rest.lastErrorText!)")
return
}
// Add query params to the request.
rest.addQueryParam(name: "grant_type", value: "client_credentials")
rest.addQueryParam(name: "client_id", value: "APP_ID")
rest.addQueryParam(name: "client_secret", value: "CLIENT_SECRET")
// Note: The resource must match the API for which you're using the access token..
rest.addQueryParam(name: "resource", value: "https://management.azure.com/")
var strResponseBody: String? = rest.fullRequestFormUrlEncoded(httpVerb: "POST", uriPath: "/TENANT_ID/oauth2/token")
if rest.lastMethodSuccess != true {
print("\(rest.lastErrorText!)")
return
}
var respStatusCode: Int = rest.responseStatusCode.intValue
if respStatusCode >= 400 {
print("Response Status Code = \(respStatusCode)")
print("Response Header:")
print("\(rest.responseHeader!)")
print("Response Body:")
print("\(strResponseBody!)")
return
}
let json = CkoJsonObject()!
json.load(json: strResponseBody)
json.emitCompact = false
print("\(json.emit()!)")
// The result is an access token such as the following:
// {
// "token_type": "Bearer",
// "expires_in": "3600",
// "ext_expires_in": "3600",
// "expires_on": "1557864616",
// "not_before": "1557860716",
// "resource": "https://management.azure.com/",
// "access_token": "eyJ0eXAiOiJKV1QiL ... 20UFDDOHEyUg"
// }
// We'll save this JSON to a file for other examples to use..
json.writeFile(path: "qa_data/tokens/azureToken.json")
}