Objective C wrapper around TwitPic's OAuth and OAuth Echo API with OAuthConsumer Lib
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 7 commits ahead of Gurpartap:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



GSTwitPicEngine provides easy to implement wrapper around the TwitPic.com'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: http://twitter.com/Gurpartap Or use the form at http://gurpartap.com/contact to talk privately (ooooh!!).


Copyright (c) 2010 Gurpartap Singh, http://gurpartap.com/

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.