Tumblr发布在iOS中失败,在iOS原生应用中出现错误404

时间:2013-11-30 07:29:30

标签: ios objective-c oauth tumblr

我的问题是我可以成功登录tumblr然而,无法在tumblr上发布。 以下是我的代码

 NSString *path = @"blog/myName.tumblr.com//post";            // set your Tumblr name here
    NSDictionary *parameters = @{@"type"  : @"text",
                                 @"title" : @"I'm On on Tumblr",
                                 @"body"  : @"Its going to be fun"};
    NSURLRequest *preparedRequest = [OAuth1Controller preparedRequestForPath:path
                                                                  parameters:parameters
                                                                  HTTPmethod:@"POST"
                                                                  oauthToken:_oauthToken
                                                                 oauthSecret:_oauthTokenSecret];

    // Send the request and when received show the response in the text view
    [NSURLConnection sendAsynchronousRequest:preparedRequest
                                       queue:NSOperationQueue.mainQueue
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                               dispatch_async(dispatch_get_main_queue(), ^{
                                   self.promptView.text = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

                                   if (error) NSLog(@"Error in API request: %@", error.localizedDescription);
                               });
                           }];

下面是我的oAuthController实现文件,其中我设置了ConsumerKey,ConsumerSecrete和回调URL

#define OAUTH_CALLBACK       @"tumblr_callback" //Sometimes this has to be the same as the registered app callback url
#define CONSUMER_KEY         @"MyKey"
#define CONSUMER_SECRET      @"MySecretKey"
#define AUTH_URL             @"http://www.tumblr.com/oauth/"
#define REQUEST_TOKEN_URL    @"request_token"
#define AUTHENTICATE_URL     @"authorize"
#define ACCESS_TOKEN_URL     @"access_token"
#define API_URL              @"http://api.tumblr.com/v2/"
#define OAUTH_SCOPE_PARAM    @"" 

以下是我收到Error

错误的屏幕截图

我在哪里做错了。如有任何帮助,我们将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:0)

代码明智,你可能想在这里寻找一些东西。

您是否可以使用oauth'GET'请求,例如“http://api.tumblr.com/v2/user/info”?如果您可以收到成功的“GET”请求,那么您的访问令牌有效,您可以查看如何发送帖子参数。

确保您将参数作为HTTP正文以及签名参数传递。库可能提供了正确的参数排序。

NSString *postbody = @"body=myBodyText&type=text";

[oRequest setHTTPBody:[postbody dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:TRUE]];

** 替代解决方案**

实施TumblrUploadr

总而言之,我使用GTM-OAuth登录并使用TumblrUploadr上传。对于那些寻求Tumblr API解决方案的人。

更新:有关GTMOAuth的一些信息,如果您想使用回调,则必须在GTMOAuthAuthentication.m>中添加一个标志。 +(NSArray *)tokenAuthorizeKeys:在数组中添加kOAuthCallbackKey,以便将其考虑在内。否则,你没有回调。