0

我正在开发一个 iOS 应用程序,它具有 Facebook、Twitter 和 Tumblr 共享等共享功能。除了 Tumblr 之外,我已经完成了所有的分享。我在这方面做了很多工作。我做了很多谷歌搜索,但在 Tumblr 分享上一无所获。这是我目前用于在 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];

 }

每当我运行此代码时,都会出现一些Authentication failed错误。我在各种线程上看到了同样的问题。这是我尝试过的链接, 但不幸的是,到目前为止还没有运气。请帮忙。

4

1 回答 1

1

而不是您自己的代码,您可以使用ShareKit

只需 3 行代码,它将为您的应用程序添加完整的共享功能。

ShareKit 是一个开源框架,可以放入任何 iPhone 或 iPad 应用程序以立即添加完整的共享功能。

Tumblr只需几行代码,您就可以使用 ShareKit 添加共享 URL、图像和文本。

分享文字

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

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

您可以在此处查看更多详细信息

于 2012-11-28T04:29:43.083 回答