Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Objective C wrapper around TwitPic's OAuth and OAuth Echo API with OAuthConsumer Lib. Deprecated.
Objective-C C
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
GSTwitPicEngine.h Committing GSTwitPicEngine.
GSTwitPicEngine.m Committing GSTwitPicEngine.
MIT-LICENSE.txt Adding License


GSTwitPicEngine provides easy to implement wrapper around the's OAuth (v1) and OAuth Echo (v2) API for iPhone application projects.



  • Set kTwitterOAuthConsumerKey, kTwitterOAuthConsumerSecret and kTwitPicAPIKey constants to their respective values before GSTwitPicEngine.h is imported.
  • See GSTwitPicEngine.h to configure TwitPic API Format (XML or JSON) and to set which JSON Parser to use.
  • Add header file:

    #import "GSTwitPicEngine.h" 
  • Setup retained (@synthesize) instance var/property in the header:

    GSTwitPicEngine *twitpicEngine;
  • Implement GSTwitPicEngineDelegate protocol for the class.
  • Initialize the engine with class or as needed:

    self.twitpicEngine = (GSTwitPicEngine *)[GSTwitPicEngine twitpicEngineWithDelegate:self];
  • Find the authorization token and supply to twitpicEngine with:

    [twitpicEngine setAccessToken:token];
  • Then to upload image and attach a text message along with it (does not post to twitter):

    [twitpicEngine uploadPicture:[UIImage imageNamed:@"mypic.png"]  withMessage:@"Hello world!"]; // This message is supplied back in success delegate call in request's userInfo.
  • To upload image only:

    [twitpicEngine uploadPicture:uploadImageView.image];
    • Upon end of request, one of the delegate methods is called with appropriate data and information.


  • GSTwitPicEngineDelegate protocol specifies two delegate methods:
- (void)twitpicDidFinishUpload:(NSDictionary *)response {
  NSLog(@"TwitPic finished uploading: %@", response);

  // [response objectForKey:@"parsedResponse"] gives an NSDictionary of the response one of the parsing libraries was available.
  // Otherwise, use [[response objectForKey:@"request"] objectForKey:@"responseString"] to parse yourself.

  if ([[[response objectForKey:@"request"] userInfo] objectForKey:@"message"] > 0 && [[response objectForKey:@"parsedResponse"] count] > 0) {
    // Uncomment to update status upon successful upload, using MGTwitterEngine's instance.
    // [twitterEngine sendUpdate:[NSString stringWithFormat:@"%@ %@", [[[response objectForKey:@"request"] userInfo] objectForKey:@"message"], [[response objectForKey:@"parsedResponse"] objectForKey:@"url"]]];
- (void)twitpicDidFailUpload:(NSDictionary *)error {
  NSLog(@"TwitPic failed to upload: %@", error);
  if ([[error objectForKey:@"request"] responseStatusCode] == 401) {
    // UIAlertViewQuick(@"Authentication failed", [error objectForKey:@"errorDescription"], @"OK");


Find me on Twitter: Or use the form at to talk privately (ooooh!!).


Copyright (c) 2010 Gurpartap Singh,

This code is licensed under the MIT License

You are free:

  • to Share — to copy, distribute and transmit the work
  • to Remix — to adapt the work

Under the following conditions:

  • The copyright notice and license shall be included in all copies or substantial portions of the software.
  • Any of the above conditions can be waived if you get permission from the copyright holder.

See bundled MIT-LICENSE.txt file for detailed license terms.

Something went wrong with that request. Please try again.