Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi DLL) Twitter Tweet with an ImageExample to post a status update with an associated image/photo (or video).
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, OAuth1, Rest, JsonObject; ... procedure TForm1.Button1Click(Sender: TObject); var json: HCkJsonObject; success: Boolean; rest: HCkRest; oauth1: HCkOAuth1; bAutoReconnect: Boolean; tweetContent: PWideChar; resp: PWideChar; jsonResponse: HCkJsonObject; begin // 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 := CkJsonObject_Create(); success := CkJsonObject_LoadFile(json,'qa_data/tokens/twitter.json'); rest := CkRest_Create(); oauth1 := CkOAuth1_Create(); CkOAuth1_putConsumerKey(oauth1,'TWITTER_CONSUMER_KEY'); CkOAuth1_putConsumerSecret(oauth1,'TWITTER_CONSUMER_SECRET'); CkOAuth1_putToken(oauth1,CkJsonObject__stringOf(json,'oauth_token')); CkOAuth1_putTokenSecret(oauth1,CkJsonObject__stringOf(json,'oauth_token_secret')); CkOAuth1_putSignatureMethod(oauth1,'HMAC-SHA1'); CkOAuth1_GenNonce(oauth1,16); CkRest_SetAuthOAuth1(rest,oauth1,False); bAutoReconnect := True; success := CkRest_Connect(rest,'api.twitter.com',443,True,bAutoReconnect); if (success <> True) then begin Memo1.Lines.Add(CkRest__lastErrorText(rest)); Exit; end; // This ends the initial setup... // ---------------------------------------------------------------------- tweetContent := 'This is a test tweet with an image.'; // Send a tweet... CkRest_ClearAllQueryParams(rest); CkRest_AddQueryParam(rest,'status',tweetContent); // Add list of 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. // This example will add just a single image/photo. CkRest_AddQueryParam(rest,'media_ids','793137045996646400'); resp := CkRest__fullRequestFormUrlEncoded(rest,'POST','/1.1/statuses/update.json'); if (CkRest_getLastMethodSuccess(rest) <> True) then begin Memo1.Lines.Add(CkRest__lastErrorText(rest)); Exit; end; jsonResponse := CkJsonObject_Create(); CkJsonObject_putEmitCompact(jsonResponse,False); CkJsonObject_Load(jsonResponse,resp); if (CkRest_getResponseStatusCode(rest) <> 200) then begin Memo1.Lines.Add(CkJsonObject__emit(jsonResponse)); Exit; end; // Show the successful response: Memo1.Lines.Add(CkJsonObject__emit(jsonResponse)); Memo1.Lines.Add('Success.'); // A successful JSON response looks like this: // { // "created_at": "Mon Oct 31 20:25:17 +0000 2016", // "id": 793187104528347136, // "id_str": "793187104528347136", // "text": "This is a test tweet with an image. https:\/\/t.co\/4mcCL0k36x", // "truncated": false, // "entities": { // "hashtags": [ // ], // "symbols": [ // ], // "user_mentions": [ // ], // "urls": [ // ], // "media": [ // { // "id": 793137045996646400, // "id_str": "793137045996646400", // "indices": [ // 36, // 59 // ], // "media_url": "http:\/\/pbs.twimg.com\/media\/CwHJ8OzVMAAojGR.jpg", // "media_url_https": "https:\/\/pbs.twimg.com\/media\/CwHJ8OzVMAAojGR.jpg", // "url": "https:\/\/t.co\/4mcCL0k36x", // "display_url": "pic.twitter.com\/4mcCL0k36x", // "expanded_url": "https:\/\/twitter.com\/chilkatsoft\/status\/793187104528347136\/photo\/1", // "type": "photo", // "sizes": { // "large": { // "w": 120, // "h": 120, // "resize": "fit" // }, // "medium": { // "w": 120, // "h": 120, // "resize": "fit" // }, // "thumb": { // "w": 120, // "h": 120, // "resize": "crop" // }, // "small": { // "w": 120, // "h": 120, // "resize": "fit" // } // } // } // ] // }, // "extended_entities": { // "media": [ // { // "id": 793137045996646400, // "id_str": "793137045996646400", // "indices": [ // 36, // 59 // ], // "media_url": "http:\/\/pbs.twimg.com\/media\/CwHJ8OzVMAAojGR.jpg", // "media_url_https": "https:\/\/pbs.twimg.com\/media\/CwHJ8OzVMAAojGR.jpg", // "url": "https:\/\/t.co\/4mcCL0k36x", // "display_url": "pic.twitter.com\/4mcCL0k36x", // "expanded_url": "https:\/\/twitter.com\/chilkatsoft\/status\/793187104528347136\/photo\/1", // "type": "photo", // "sizes": { // "large": { // "w": 120, // "h": 120, // "resize": "fit" // }, // "medium": { // "w": 120, // "h": 120, // "resize": "fit" // }, // "thumb": { // "w": 120, // "h": 120, // "resize": "crop" // }, // "small": { // "w": 120, // "h": 120, // "resize": "fit" // } // } // } // ] // }, // "source": "\u003ca href=\"https:\/\/www.chilkatsoft.com\/\" rel=\"nofollow\"\u003eChilkatTestApp\u003c\/a\u003e", // "in_reply_to_status_id": null, // "in_reply_to_status_id_str": null, // "in_reply_to_user_id": null, // "in_reply_to_user_id_str": null, // "in_reply_to_screen_name": null, // "user": { // "id": 85647455, // "id_str": "85647455", // "name": "Chilkat Software", // "screen_name": "chilkatsoft", // "location": "", // "description": "", // "url": "https:\/\/t.co\/hSTR4sOuis", // "entities": { // "url": { // "urls": [ // { // "url": "https:\/\/t.co\/hSTR4sOuis", // "expanded_url": "http:\/\/www.chilkatsoft.com", // "display_url": "chilkatsoft.com", // "indices": [ // 0, // 23 // ] // } // ] // }, // "description": { // "urls": [ // ] // } // }, // "protected": false, // "followers_count": 41, // "friends_count": 0, // "listed_count": 4, // "created_at": "Tue Oct 27 19:56:13 +0000 2009", // "favourites_count": 0, // "utc_offset": null, // "time_zone": null, // "geo_enabled": false, // "verified": false, // "statuses_count": 16, // "lang": "en", // "contributors_enabled": false, // "is_translator": false, // "is_translation_enabled": false, // "profile_background_color": "C0DEED", // "profile_background_image_url": "http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png", // "profile_background_image_url_https": "https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png", // "profile_background_tile": false, // "profile_image_url": "http:\/\/pbs.twimg.com\/profile_images\/785893001012744195\/clLweDSg_normal.jpg", // "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/785893001012744195\/clLweDSg_normal.jpg", // "profile_link_color": "0084B4", // "profile_sidebar_border_color": "C0DEED", // "profile_sidebar_fill_color": "DDEEF6", // "profile_text_color": "333333", // "profile_use_background_image": true, // "has_extended_profile": false, // "default_profile": true, // "default_profile_image": false, // "following": false, // "follow_request_sent": false, // "notifications": false, // "translator_type": "none" // }, // "geo": null, // "coordinates": null, // "place": null, // "contributors": null, // "is_quote_status": false, // "retweet_count": 0, // "favorite_count": 0, // "favorited": false, // "retweeted": false, // "possibly_sensitive": false, // "lang": "en" // } // CkJsonObject_Dispose(json); CkRest_Dispose(rest); CkOAuth1_Dispose(oauth1); CkJsonObject_Dispose(jsonResponse); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.