Sample code for 30+ languages & platforms
Go

UPS OAuth2 Client Credentials

See more UPS Examples

Get an OAuth2 access token for the UPS REST API using the client credentials flow (no interactivity with a web browser required).

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 -i -X POST \
    //   -u 2498righ8wr6aihe98rt8rhowirtyw9er6twe80rtywrehrt:nerf254578uh8rgt7y3h57358ouyth387h8h53h6yyh80hh578per9y7u5ruyuy4 \
    //   https://wwwcie.ups.com/security/v1/oauth/token \
    //   -H 'Content-Type: application/x-www-form-urlencoded' \
    //   -H 'x-merchant-id: 7B3027' \
    //   -d grant_type=client_credentials

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

    http.SetBasicAuth(true)
    http.SetLogin("2498righ8wr6aihe98rt8rhowirtyw9er6twe80rtywrehrt")
    http.SetPassword("nerf254578uh8rgt7y3h57358ouyth387h8h53h6yyh80hh578per9y7u5ruyuy4")

    req := chilkat.NewHttpRequest()
    req.AddParam("grant_type","client_credentials")

    req.AddHeader("x-merchant-id","7B3027")

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

    resp := chilkat.NewHttpResponse()
    success = http.HttpReq("https://wwwcie.ups.com/security/v1/oauth/token",req,resp)
    if success == false {
        fmt.Println(http.LastErrorText())
        http.DisposeHttp()
        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()
        req.DisposeHttpRequest()
        resp.DisposeHttpResponse()
        sbResponseBody.DisposeStringBuilder()
        jResp.DisposeJsonObject()
        return
    }

    // Save the OAuth2 access token for other examples to use.
    jResp.WriteFile("qa_data/tokens/ups_oauth2_token.json")

    // If successful, the OAuth2 access token JSON looks like this:

    // {
    //   "token_type": "Bearer",
    //   "issued_at": "1686911985606",
    //   "client_id": "2498righ8wr6aihe98rt8rhowirtyw9er6twe80rtywrehrt",
    //   "access_token": "eyJraW......R2sbqrY",
    //   "expires_in": "14399",
    //   "status": "approved"
    // }

    token_type := jResp.StringOf("token_type")
    issued_at := jResp.StringOf("issued_at")
    client_id := jResp.StringOf("client_id")
    access_token := jResp.StringOf("access_token")
    expires_in := jResp.StringOf("expires_in")
    status := jResp.StringOf("status")

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