Sample code for 30+ languages & platforms
Lianja

Google Drive Refresh Access Token

See more Google Drive Examples

Demonstrates how to automatically refresh the access token when it expires.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

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

llSuccess = .T.

// This example uses a previously obtained access token having permission for the 
// Google Drive scope.

// The access token (and refresh token) was previously saved to a JSON file with this format:
// See Get Google Drive OAuth2 Access Token

// {
//   "access_token": "ya29.Gls-BsdxTWuenChv ... yzVIrXikkLxu5T6dy4I6GjADFardoz4Lruw",
//   "expires_in": 3600,
//   "refresh_token": "1/tMBJ ... 27D-Hk6rpQYBA",
//   "scope": "https://www.googleapis.com/auth/drive",
//   "token_type": "Bearer"
// }

loJson = createobject("CkJsonObject")
lcTokenFilePath = "qa_data/tokens/googleDrive.json"
loJson.LoadFile(lcTokenFilePath)

loOauth2 = createobject("CkOAuth2")
loOauth2.AccessToken = loJson.StringOf("access_token")
loOauth2.RefreshToken = loJson.StringOf("refresh_token")

loOauth2.AuthorizationEndpoint = "https://accounts.google.com/o/oauth2/v2/auth"
loOauth2.TokenEndpoint = "https://www.googleapis.com/oauth2/v4/token"

//  Replace these with actual values.
loOauth2.ClientId = "GOOGLE-CLIENT-ID"
loOauth2.ClientSecret = "GOOGLE-CLIENT-SECRET"
loOauth2.Scope = "https://www.googleapis.com/auth/drive"

// Use OAuth2 to refresh the access token.
llSuccess = loOauth2.RefreshAccessToken()
if (llSuccess <> .T.) then
    ? loOauth2.LastErrorText
    release loJson
    release loOauth2
    return
endif

? loOauth2.AccessTokenResponse

// Save the new access token to our JSON file (so we can refresh it again when needed).
loJson.UpdateString("access_token",loOauth2.AccessToken)

loFac = createobject("CkFileAccess")
loFac.WriteEntireTextFile(lcTokenFilePath,loJson.Emit(),"utf-8",.F.)

? "Access Token Refreshed!"


release loJson
release loOauth2
release loFac