0

I am working on an iOS application which has sharing functionality like Facebook, Twitter and Tumblr Sharing. I have done all sharing besides the Tumblr. I've worked a lot on this. I have done a lot of googling, but found nothing on Tumblr Sharing. Here is my code currently using for sharing text over Tumblr :

- (void)shareOvertumblr:(id)sender
{
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]
                                initWithURL:
                                [NSURL URLWithString:@"http://www.tumblr.com/api/write"]];
[request setHTTPMethod:@"POST"];
//tell the server to expect 8-bit encoded content as we're sending UTF-8 data,
//and UTF-8 is an 8-bit encoding
[request addValue:@"8bit" forHTTPHeaderField:@"Content-Transfer-Encoding"];
//set the content-type header to multipart MIME
[request addValue: [NSString stringWithFormat:@"multipart/form-data; boundary=%@",[NSString MIMEBoundary]] forHTTPHeaderField: @"Content-Type"];

//create a dictionary for all the fields you want to send in the POST request
NSDictionary* postData = [NSDictionary dictionaryWithObjectsAndKeys:
                          @"myEmailAddress", @"email",
                          @"password", @"password",
                          @"regular", @"type",
                          @"myTitle", @"title",
                          @"Hiiii How ruuu", @"body",
                          nil];
//here inPlace of these EmailAddress and Password using my correct emailAdress and Password
//set the body of the POST request to the multipart MIME encoded dictionary
[request setHTTPBody: [[NSString multipartMIMEStringWithDictionary: postData] dataUsingEncoding: NSUTF8StringEncoding]];
[NSURLConnection connectionWithRequest:request delegate:self];
}

  /*Here is The Category */
  @interface NSString (MIMEAdditions)
+ (NSString*)MIMEBoundary;
+ (NSString*)multipartMIMEStringWithDictionary:(NSDictionary*)dict;
@end

@implementation NSString (MIMEAdditions)
//this returns a unique boundary which is used in constructing the multipart MIME body of the POST request
+ (NSString*)MIMEBoundary
{
static NSString* MIMEBoundary = nil;
if(!MIMEBoundary)
    MIMEBoundary = [[NSString alloc] initWithFormat:@"----_=_YourAppNameNoSpaces_%@_=_----",[[NSProcessInfo processInfo] globallyUniqueString]];
return MIMEBoundary;
}
 //this create a correctly structured multipart MIME body for the POST request from a dictionary
+ (NSString*)multipartMIMEStringWithDictionary:(NSDictionary*)dict
{
NSMutableString* result = [NSMutableString string];
for (NSString* key in dict)
{
    [result appendFormat:@"--%@\nContent-Disposition: form-data; name=\"%@\"\n\n%@\n", [NSString MIMEBoundary],key,[dict objectForKey:key]];
}
[result appendFormat:@"\n--%@--\n",[NSString MIMEBoundary]];
return result;
}
@end

 /*Connection Delegate Methods*/
 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
 {
 [self.view setUserInteractionEnabled:YES];

 }
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
webData = [[NSMutableData alloc] initWithLength:0];
// webData is The NSMutable data
}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{

NSString* responseString = [[NSString alloc] initWithData: webData
                                                 encoding: NSUTF8StringEncoding];

NSLog(@"Response String %@",responseString);
// here i got Authentication failed as Response .....

}


-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[webData appendData:data];

 }

Whenever i run this code getting some Authentication failed error. I have seen the same issue on various thread. Here is the link I have tried But unfortunately no luck so far. Please help.

Community
  • 1
  • 1
Kamar Shad
  • 6,089
  • 1
  • 29
  • 56

1 Answers1

1

Instead of your own code, you can use ShareKit

It will add full sharing capabilities to your App with just 3 line of code.

ShareKit is an open source framework that can be dropped into any iPhone or iPad app to instantly add full sharing capabilities.

You can use ShareKit to add sharing URLs, images, and text with Tumblr in just a few lines of code.

Sharing Text

+ (SHKItem *)text:(NSString *)text;

NSString *someText = @"This is a blurb of text I highlighted from a document.";
SHKItem *item = [SHKItem text:someText];

You can see more details here

Shamsudheen TK
  • 30,739
  • 9
  • 69
  • 102
  • Yeah i have tried Sharekit also and shareKit were not helping me for posting text over the Tumblr....it gives some login error ... – Kamar Shad Nov 28 '12 at 05:26