Sample code for 30+ languages & platforms
Objective-C

Calendar: Refresh Expired OAuth2 Access Token

See more Microsoft Calendar Examples

Refreshes an expired OAuth2 access token.

Chilkat Objective-C Downloads

Objective-C
#import <CkoJsonObject.h>
#import <CkoHttpRequest.h>
#import <CkoHttp.h>
#import <CkoHttpResponse.h>
#import <CkoFileAccess.h>

BOOL success = NO;

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

CkoJsonObject *json = [[CkoJsonObject alloc] init];
success = [json LoadFile: @"qa_data/tokens/msGraphCalendar.json"];
if (success != YES) {
    return;
}

CkoHttpRequest *req = [[CkoHttpRequest alloc] init];
[req AddParam: @"grant_type" value: @"refresh_token"];
[req AddParam: @"redirect_uri" value: @"http://localhost:3017/"];
[req AddParam: @"client_id" value: @"MICROSOFT-GRAPH-CLIENT-ID"];
[req AddParam: @"client_secret" value: @"MICROSOFT-GRAPH-CLIENT-SECRET"];
[req AddParam: @"refresh_token" value: [json StringOf: @"refresh_token"]];
[req AddParam: @"scope" value: @"openid profile offline_access user.readwrite calendars.readwrite files.readwrite"];

CkoHttp *http = [[CkoHttp alloc] init];

req.HttpVerb = @"POST";
req.ContentType = @"application/x-www-form-urlencoded";

CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpReq: @"https://login.microsoftonline.com/common/oauth2/v2.0/token" request: req response: resp];
if (success == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

// Load the JSON response.
[json Load: resp.BodyStr];
json.EmitCompact = NO;

// Show the JSON response.
NSLog(@"%@",[json Emit]);

NSLog(@"%@%d",@"Response status code: ",[resp.StatusCode intValue]);

// If the response status code is not 200, then it's an error.
if ([resp.StatusCode intValue] != 200) {
    return;
}

// Save the refreshed access token JSON to a file for future requests.
CkoFileAccess *fac = [[CkoFileAccess alloc] init];
[fac WriteEntireTextFile: @"qa_data/tokens/msGraphCalendar.json" fileData: [json Emit] charset: @"utf-8" includePreamble: NO];

NSLog(@"%@",@"Success.");