Sample code for 30+ languages & platforms
Go

Dropbox Refresh OAuth2 Access Token

See more Dropbox Examples

Demonstrates how to mint a new access token using the refresh token obtained when originally getting the OAuth2 access token.

Chilkat Go Downloads

Go
    success := false

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

    http := chilkat.NewHttp()

    // Implements the following CURL command:

    // curl -X GET https://api.dropbox.com/oauth2/token \
    //     -d grant_type=refresh_token \
    //     -d refresh_token=<YOUR_REFRESH_TOKEN> \
    //     -u <YOUR_APP_KEY>:<YOUR_APP_SECRET>

    // Use the following online tool to generate HTTP code from a CURL command
    // Convert a cURL Command to HTTP Source Code

    http.SetLogin("DROPBOX_APP_KEY")
    http.SetPassword("DROPBOX_APP_SECRET")

    // Get the refresh token from the JSON we saved when originally getting the access token.
    // (See Get Dropbox OAuth2 Access Token w/ Refresh Token
    json := chilkat.NewJsonObject()
    success = json.LoadFile("qa_data/tokens/dropbox.json")
    if success == false {
        fmt.Println(json.LastErrorText())
        http.DisposeHttp()
        json.DisposeJsonObject()
        return
    }

    req := chilkat.NewHttpRequest()
    req.AddParam("grant_type","refresh_token")
    req.AddParam("refresh_token",*json.StringOf("refresh_token"))

    req.SetHttpVerb("POST")
    req.SetContentType("application/x-www-form-urlencoded")

    resp := chilkat.NewHttpResponse()
    success = http.HttpReq("https://api.dropbox.com/oauth2/token",req,resp)
    if success == false {
        fmt.Println(http.LastErrorText())
        http.DisposeHttp()
        json.DisposeJsonObject()
        req.DisposeHttpRequest()
        resp.DisposeHttpResponse()
        return
    }

    sbResponseBody := chilkat.NewStringBuilder()
    resp.GetBodySb(sbResponseBody)

    jResp := chilkat.NewJsonObject()
    jResp.LoadSb(sbResponseBody)
    jResp.SetEmitCompact(false)

    fmt.Println("Response Body:")
    fmt.Println(*jResp.Emit())

    respStatusCode := resp.StatusCode()
    fmt.Println("Response Status Code = ", respStatusCode)
    if respStatusCode >= 400 {
        fmt.Println("Response Header:")
        fmt.Println(resp.Header())
        fmt.Println("Failed.")
        http.DisposeHttp()
        json.DisposeJsonObject()
        req.DisposeHttpRequest()
        resp.DisposeHttpResponse()
        sbResponseBody.DisposeStringBuilder()
        jResp.DisposeJsonObject()
        return
    }

    // Sample JSON response:
    // (Sample code for parsing the JSON response is shown below)

    // {
    //   "access_token": "sl.AC75WPYRqOi0mxcRqlimbV9FKHu04biz5qHwatG3MTgzFK7kLrGVlM9EgP4603tE7bWw0s1rMbTKiHsf37TUshPYvq-3r0qeBr_PrZIAibN8XOQicvboiOnqx6JrDekq-w8D-tE",
    //   "token_type": "bearer",
    //   "expires_in": 14400
    // }

    access_token := jResp.StringOf("access_token")
    fmt.Println("New Access Token: ", *access_token)

    // Perhaps update our Dropbox JSON file with the new access token.
    // (The existing refresh token does not change, and can be used over and over to mint new access tokens.)
    json.UpdateString("access_token",*access_token)

    json.WriteFile("qa_data/tokens/dropbox.json")

    http.DisposeHttp()
    json.DisposeJsonObject()
    req.DisposeHttpRequest()
    resp.DisposeHttpResponse()
    sbResponseBody.DisposeStringBuilder()
    jResp.DisposeJsonObject()