PureBasic
PureBasic
Twitter - Tweet with Multiple Images
Example to post a status update with multiple associated images/photos (or videos).Chilkat PureBasic Downloads
IncludeFile "CkRest.pb"
IncludeFile "CkJsonObject.pb"
IncludeFile "CkOAuth1.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; ----------------------------------------------------------------------
; This initial setup, which involves setting the OAuth1 properties and connecting
; to api.twitter.com, is only required once at the beginning. Once connected, the same
; object instance may be re-used, and if necessary, it will automatically reconnect
; as needed.
; Assume we've previously obtained an access token and saved it to a JSON file..
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkJsonObject::ckLoadFile(json,"qa_data/tokens/twitter.json")
rest.i = CkRest::ckCreate()
If rest.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
oauth1.i = CkOAuth1::ckCreate()
If oauth1.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkOAuth1::setCkConsumerKey(oauth1, "TWITTER_CONSUMER_KEY")
CkOAuth1::setCkConsumerSecret(oauth1, "TWITTER_CONSUMER_SECRET")
CkOAuth1::setCkToken(oauth1, CkJsonObject::ckStringOf(json,"oauth_token"))
CkOAuth1::setCkTokenSecret(oauth1, CkJsonObject::ckStringOf(json,"oauth_token_secret"))
CkOAuth1::setCkSignatureMethod(oauth1, "HMAC-SHA1")
CkOAuth1::ckGenNonce(oauth1,16)
CkRest::ckSetAuthOAuth1(rest,oauth1,0)
bAutoReconnect.i = 1
success = CkRest::ckConnect(rest,"api.twitter.com",443,1,bAutoReconnect)
If success <> 1
Debug CkRest::ckLastErrorText(rest)
CkJsonObject::ckDispose(json)
CkRest::ckDispose(rest)
CkOAuth1::ckDispose(oauth1)
ProcedureReturn
EndIf
; This ends the initial setup...
; ----------------------------------------------------------------------
tweetContent.s = "This is a test tweet with multiple images."
; Send a tweet...
CkRest::ckClearAllQueryParams(rest)
CkRest::ckAddQueryParam(rest,"status",tweetContent)
; Add list of comma separated media_ids to associate with the Tweet.
; You may include up to 4 photos or 1 animated GIF or 1 video in a Tweet.
; The image needs to have been previously uploaded. The upload response gave us
; the media ID we'll use to associate this tweet with the image (or video)
; See Twitter Upload Media for sample code.
CkRest::ckAddQueryParam(rest,"media_ids","793137045996646400,793192201392041984")
resp.s = CkRest::ckFullRequestFormUrlEncoded(rest,"POST","/1.1/statuses/update.json")
If CkRest::ckLastMethodSuccess(rest) <> 1
Debug CkRest::ckLastErrorText(rest)
CkJsonObject::ckDispose(json)
CkRest::ckDispose(rest)
CkOAuth1::ckDispose(oauth1)
ProcedureReturn
EndIf
jsonResponse.i = CkJsonObject::ckCreate()
If jsonResponse.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::setCkEmitCompact(jsonResponse, 0)
CkJsonObject::ckLoad(jsonResponse,resp)
If CkRest::ckResponseStatusCode(rest) <> 200
Debug CkJsonObject::ckEmit(jsonResponse)
CkJsonObject::ckDispose(json)
CkRest::ckDispose(rest)
CkOAuth1::ckDispose(oauth1)
CkJsonObject::ckDispose(jsonResponse)
ProcedureReturn
EndIf
; Show the successful response:
Debug CkJsonObject::ckEmit(jsonResponse)
Debug "Success."
CkJsonObject::ckDispose(json)
CkRest::ckDispose(rest)
CkOAuth1::ckDispose(oauth1)
CkJsonObject::ckDispose(jsonResponse)
ProcedureReturn
EndProcedure