Sample code for 30+ languages & platforms
Xbase++

Google Drive Refresh Access Token

See more Google Drive Examples

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

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oJson
LOCAL cTokenFilePath
LOCAL oOauth2
LOCAL oFac

nSuccess := 0

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

nSuccess := 1

//  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"
//  }

oJson := CreateObject("Chilkat.JsonObject")
cTokenFilePath := "qa_data/tokens/googleDrive.json"
oJson:LoadFile(cTokenFilePath)

oOauth2 := CreateObject("Chilkat.OAuth2")
oOauth2:AccessToken := oJson:StringOf("access_token")
oOauth2:RefreshToken := oJson:StringOf("refresh_token")

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

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

//  Use OAuth2 to refresh the access token.
nSuccess := oOauth2:RefreshAccessToken()
IF (nSuccess != 1)
    ? oOauth2:LastErrorText
    oJson:destroy()
    oOauth2:destroy()
    RETURN
ENDIF

? oOauth2:AccessTokenResponse

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

oFac := CreateObject("Chilkat.FileAccess")
oFac:WriteEntireTextFile(cTokenFilePath, oJson:Emit(), "utf-8", 0)

? "Access Token Refreshed!"

oJson:destroy()
oOauth2:destroy()
oFac:destroy()