2012-06-05 22 views
1

如何使用TWRequest, 我使用此代码如何使用TWRequest

张贴到时间表更改个人资料图片来改变轮廓图象

- (IBAction为)postToTwitter { ACAccountStore *帐户= [[ACAccountStore的alloc] INIT]; ACAccountType * accountType = [account accountWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

// Request access from the user to access their Twitter account 
[account requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) 
{ 
    // Did user allow us access? 
    if (granted == YES) 
    { 
     // Populate array with all available Twitter accounts 
     NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType]; 

     // Sanity check 
     if ([arrayOfAccounts count] > 0) 
     { 
      // Keep it simple, use the first account available 
      ACAccount *acct = [arrayOfAccounts objectAtIndex:0]; 

      // Build a twitter request 

      //http://api.twitter.com/1/account/update_profile_image.json 
      //https://upload.twitter.com/1/statuses/update_with_media.json 

      TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"https://upload.twitter.com/1/statuses/update_with_media.json"] parameters:nil requestMethod:TWRequestMethodPOST]; 

      //NSData *myData = UIImagePNGRepresentation(self.selectedImage); 
      NSData *myData = UIImageJPEGRepresentation(self.selectedImage, 0.5); 

      [postRequest addMultiPartData:myData withName:@"media" type:@"image/jpg"]; 

      [postRequest setAccount:acct]; 

      // Block handler to manage the response 
      /*  
       [postRequest addMultiPartData:[base64 dataUsingEncoding:NSUTF8StringEncoding] // base64 is an NSString of the encoded image 

       withName:@"image" 

       type:@"multipart/form-data"]; 

       // Post the request*/ 

      [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) 
       { 
        NSLog(@"Twitter response, HTTP response: %i", [urlResponse statusCode]); 
       } 
       ]; 


    } 
    } 
}]; 

}

回答

2

我这个挣扎过,使用苹果的WWDC11幻灯片为指导,但似乎Twitter已经改变了API从那时起(或幻灯片有一个bug)。

解决方案很简单:您需要使用“图片”而不是“媒体”的多部分数据名称。我认为这个类型应该是“image/jpeg”,而不是“image/jpg”。

因此改变该行如下:

[postRequest addMultiPartData:myData withName:@"image" type:@"image/jpeg"];