Go
Go
AzureWebsites OAuth2 Password Flow
See more OAuth2 Examples
Demonstrates how to do OAuth 2.0 password flow for azurewebsites.net.Chilkat Go Downloads
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()