Xbase++
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
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()