Sample code for 30+ languages & platforms
Go

AzureWebsites OAuth2 Password Flow

See more OAuth2 Examples

Demonstrates how to do OAuth 2.0 password flow for azurewebsites.net.

Chilkat Go Downloads

Go
    success := false

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

    http := chilkat.NewHttp()

    req := chilkat.NewHttpRequest()
    req.SetHttpVerb("POST")
    req.SetPath("/token")
    req.SetContentType("application/x-www-form-urlencoded")
    req.AddParam("grant_type","password")
    req.AddParam("username","your_username")
    req.AddParam("password","your_password")

    tokenEndpoint := "https://your_api.azurewebsites.net/token"

    resp := chilkat.NewHttpResponse()
    success = http.HttpReq(tokenEndpoint,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())

    // Sample JSON response:

    // {
    //   "access_token": "NQGHn ... xTS",
    //   "token_type": "bearer",
    //   "expires_in": 1209599,
    //   "userName": "your_username",
    //   ".issued": "Mon, 27 Apr 2020 23:49:35 GMT",
    //   ".expires": "Mon, 11 May 2020 23:49:35 GMT"
    // }

    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
    }

    // ----------------------------------
    // Use the OAuth2 token in a request.
    // For example...

    sbXml := chilkat.NewStringBuilder()
    success = sbXml.LoadFile("c:/someDir/someXmlFile.xml","utf-8")
    if success == false {
        fmt.Println("Failed to load the XML file.")
        http.DisposeHttp()
        req.DisposeHttpRequest()
        resp.DisposeHttpResponse()
        sbResponseBody.DisposeStringBuilder()
        jResp.DisposeJsonObject()
        sbXml.DisposeStringBuilder()
        return
    }

    // Get the OAuth2 token and use it for authentication
    http.SetAuthToken(jResp.StringOf("token"))

    destUrl := "https://your_api.azurewebsites.net/destinationUrl"
    success = http.HttpSb("POST",destUrl,sbXml,"utf-8","application/xml",resp)
    if success == false {
        fmt.Println(http.LastErrorText())
        http.DisposeHttp()
        req.DisposeHttpRequest()
        resp.DisposeHttpResponse()
        sbResponseBody.DisposeStringBuilder()
        jResp.DisposeJsonObject()
        sbXml.DisposeStringBuilder()
        return
    }

    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()
        sbXml.DisposeStringBuilder()
        return
    }

    // Examine the response body
    fmt.Println(resp.BodyStr())

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