将用户个人资料pic发布到twitter,给出错误131

时间:2013-12-07 03:22:11

标签: http post twitter ios7

当尝试将用户个人资料照片发布到Twitter时,我收到错误代码131回复:

2013-12-06 19:17:29.854 Tweetly[8131:60b] {
    errors =     (
                {
            code = 131;
            message = "Internal error";
        }
    );
}

Twitters网站列出了这个:

“与HTTP 500对应 - 发生了未知的内部错误。”

这是我的代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {


    //Code for store image
    [picker dismissViewControllerAnimated:YES completion:nil];

    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

    UIImage *scaledImage = [self imageWithImage:image convertToSize:CGSizeMake(500, 500)];
    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(scaledImage)];

    [self uploadPictureWithData:imageData];

}


- (UIImage *)imageWithImage:(UIImage *)image convertToSize:(CGSize)size {

    UIGraphicsBeginImageContext(size);
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
    UIImage *destImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return destImage;

}



- (void)uploadPictureWithData:(NSData *)imageData {

    // Get the twitter feed
    NSURL *requestURL = [NSURL URLWithString:@"https://api.twitter.com/1.1/account/update_profile_image.json"];

    // Set up proper parameters
    NSMutableDictionary *timelineParameters = [[NSMutableDictionary alloc] init];
    [timelineParameters setObject:imageData forKey:@"image"];
    [timelineParameters setObject:@"1" forKey:@"skip_status"];

    // Create the Social Request
    SLRequest *postRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:requestURL parameters:timelineParameters];
    postRequest.account = self.delegate.userAccount;

    // Perform the request
    [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
        dispatch_async(dispatch_get_main_queue(), ^{
            // Check if we reached the reate limit
            if ([urlResponse statusCode] == 429) {

                // Rate limit reached
                // Display an alert letting the user know we have hit the rate limit

                UIAlertView *twitterAlert = [[UIAlertView alloc] initWithTitle:kRateLimitTitle
                                                                       message:kRateLimitMessage
                                                                      delegate:nil
                                                             cancelButtonTitle:@"Ok"
                                                             otherButtonTitles:nil];
                [twitterAlert show];

                return;

            }
            // Check if there was an error
            if (error) {

                NSLog(@"Error: %@", error.localizedDescription);
                return;

            }
            // Check if there is some response data
            if (responseData) {
                NSError *jsonError = nil;
                NSMutableArray *feedData = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&jsonError];
                if (!jsonError) {

                    // Check the response data

                    NSLog(@"%@", feedData);

                } else {

                    // Alert the user with the error
                    UIAlertView *twitterAlert = [[UIAlertView alloc] initWithTitle:kErrorTitle
                                                                           message:kErrorMessage
                                                                          delegate:nil
                                                                 cancelButtonTitle:@"Ok"
                                                                 otherButtonTitles:nil];
                    [twitterAlert show];


                }
            } else {

                // Alert the user with the error
                UIAlertView *twitterAlert = [[UIAlertView alloc] initWithTitle:kErrorTitle
                                                                       message:kErrorMessage
                                                                      delegate:nil
                                                             cancelButtonTitle:@"Ok"
                                                             otherButtonTitles:nil];
                [twitterAlert show];


            }


        });
    }];


}

知道问题可能是什么?我最初认为这是因为图像太大,所以我添加了将图像缩小到500 x 500的方法,但我得到了同样的错误。

在设备和模拟器上运行时会发生此错误。

有没有人知道问题出在哪里或有任何额外的见解?谢谢!

1 个答案:

答案 0 :(得分:0)

在我的测试中,大于1000x1000px的图像不会同步缩小尺寸,抛出131响应代码。遗憾的是,没有记载。

确保图像<700kb且小于1000x1000px。  https://dev.twitter.com/rest/reference/post/account/update_profile_image