Sample code for 30+ languages & platforms
PowerBuilder Requires Chilkat v11.0.0+

Twitter - Application Only Authentication

Demonstrates how to get a Twitter OAuth2 token for application-only authentication.

This example is deprecated and no longer valid.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
string ls_ConsumerKey
string ls_ConsumerSecret
oleobject loo_Http
oleobject loo_Req
oleobject loo_Resp
oleobject loo_Json

li_Success = 0

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

//  Note: Define your Twitter apps at https://apps.twitter.com/

//  We're going to send an HTTPS POST that looks like this:

//  POST /oauth2/token HTTP/1.1
//  Host: api.twitter.com
//  User-Agent: My Twitter App v1.0.23
//  Authorization: Basic eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJn
//                       NmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw==
//  Content-Type: application/x-www-form-urlencoded;charset=UTF-8
//  Content-Length: 29
//  Accept-Encoding: gzip
//  
//  grant_type=client_credentials

//  Update these values with your consumer key and secret (also known as API key and API secret).
ls_ConsumerKey = "TWITTER_CONSUMER_KEY"
ls_ConsumerSecret = "TWITTER_CONSUMER_SECRET"

loo_Http = create oleobject
li_rc = loo_Http.ConnectToNewObject("Chilkat.Http")
if li_rc < 0 then
    destroy loo_Http
    MessageBox("Error","Connecting to COM object failed")
    return
end if

loo_Http.BasicAuth = 1
loo_Http.Login = ls_ConsumerKey
loo_Http.Password = ls_ConsumerSecret

loo_Req = create oleobject
li_rc = loo_Req.ConnectToNewObject("Chilkat.HttpRequest")

loo_Req.AddParam("grant_type","client_credentials")

loo_Req.HttpVerb = "POST"
loo_Req.ContentType = "application/x-www-form-urlencoded"

loo_Resp = create oleobject
li_rc = loo_Resp.ConnectToNewObject("Chilkat.HttpResponse")

li_Success = loo_Http.HttpReq("https://api.twitter.com/oauth2/token",loo_Req,loo_Resp)
if li_Success = 0 then
    Write-Debug loo_Http.LastErrorText
    destroy loo_Http
    destroy loo_Req
    destroy loo_Resp
    return
end if

Write-Debug "Response Status Code: " + string(loo_Resp.StatusCode)

if loo_Resp.StatusCode <> 200 then
    Write-Debug "Expected a 200 response status code for success."
    Write-Debug loo_Resp.BodyStr
    destroy loo_Http
    destroy loo_Req
    destroy loo_Resp
    return
end if

//  We should get a JSON response like this:

//  {
//      "token_type":"bearer",
//      "access_token":"..."
//  }

loo_Json = create oleobject
li_rc = loo_Json.ConnectToNewObject("Chilkat.JsonObject")

loo_Json.Load(loo_Resp.BodyStr)

Write-Debug "Access token = " + loo_Json.StringOf("access_token")


destroy loo_Http
destroy loo_Req
destroy loo_Resp
destroy loo_Json