Sample code for 30+ languages & platforms
Delphi ActiveX

Twitter - Tweet with Multiple Images

Example to post a status update with multiple associated images/photos (or videos).

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
json: TChilkatJsonObject;
rest: TChilkatRest;
oauth1: TChilkatOAuth1;
bAutoReconnect: Integer;
tweetContent: WideString;
resp: WideString;
jsonResponse: TChilkatJsonObject;

begin
success := 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 := TChilkatJsonObject.Create(Self);
success := json.LoadFile('qa_data/tokens/twitter.json');

rest := TChilkatRest.Create(Self);
oauth1 := TChilkatOAuth1.Create(Self);

oauth1.ConsumerKey := 'TWITTER_CONSUMER_KEY';
oauth1.ConsumerSecret := 'TWITTER_CONSUMER_SECRET';
oauth1.Token := json.StringOf('oauth_token');
oauth1.TokenSecret := json.StringOf('oauth_token_secret');
oauth1.SignatureMethod := 'HMAC-SHA1';
oauth1.GenNonce(16);

rest.SetAuthOAuth1(oauth1.ControlInterface,0);

bAutoReconnect := 1;
success := rest.Connect('api.twitter.com',443,1,bAutoReconnect);
if (success <> 1) then
  begin
    Memo1.Lines.Add(rest.LastErrorText);
    Exit;
  end;

// This ends the initial setup...
// ----------------------------------------------------------------------

tweetContent := 'This is a test tweet with multiple images.';

// Send a tweet...
rest.ClearAllQueryParams();
rest.AddQueryParam('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.
rest.AddQueryParam('media_ids','793137045996646400,793192201392041984');

resp := rest.FullRequestFormUrlEncoded('POST','/1.1/statuses/update.json');
if (rest.LastMethodSuccess <> 1) then
  begin
    Memo1.Lines.Add(rest.LastErrorText);
    Exit;
  end;

jsonResponse := TChilkatJsonObject.Create(Self);
jsonResponse.EmitCompact := 0;
jsonResponse.Load(resp);

if (rest.ResponseStatusCode <> 200) then
  begin
    Memo1.Lines.Add(jsonResponse.Emit());
    Exit;
  end;

// Show the successful response:
Memo1.Lines.Add(jsonResponse.Emit());
Memo1.Lines.Add('Success.');
end;