Thanks @CReaTuS, I want to clear this up to some bit. Please note that in the case of iOS6 we are doing SLRequest, where in iOS5 we have to execute the request using TWRequest. See below -
ACAccountStore *accountStore = [[ACAccountStore alloc] init]; ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; if ( [accountStore respondsToSelector:@selector(requestAccessToAccountsWithType: options: completion:)] ) { [accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) { dispatch_async(dispatch_get_main_queue(), ^{ if (granted) { // Get the list of Twitter accounts. NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; // For the sake of brevity, we'll assume there is only one Twitter account present. // You would ideally ask the user which account they want to tweet from, if there is more than one Twitter account present. if ([accountsArray count] > 0) { // Grab the initial Twitter account to tweet from. ACAccount *twitterAccount = [accountsArray objectAtIndex:0]; NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init]; [tempDict setValue:@"Twitter_Name" forKey:@"screen_name"]; [tempDict setValue:@"true" forKey:@"follow"]; //Code specific to iOS6 or later SLRequest *followRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://api.twitter.com/1.1/friendships/create.json"] parameters:tempDict]; // To unfollow hit URL-https://api.twitter.com/1.1/friendships/destroy.json [followRequest setAccount:twitterAccount]; [followRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { NSString *output = [NSString stringWithFormat:@"HTTP response status: %i", [urlResponse statusCode]]; NSLog(@"%@", output); if (error) { dispatch_async(dispatch_get_main_queue(), ^{ //Update UI to show follow request failed }); } else { dispatch_async(dispatch_get_main_queue(), ^{ //Update UI to show success }); } }]; } } }); }]; } else if ( [accountStore respondsToSelector:@selector(requestAccessToAccountsWithType: withCompletionHandler:)] ) { [accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) { dispatch_async(dispatch_get_main_queue(), ^{ if (granted) { // Get the list of Twitter accounts. NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; // For the sake of brevity, we'll assume there is only one Twitter account present. // You would ideally ask the user which account they want to tweet from, if there is more than one Twitter account present. if ([accountsArray count] > 0) { // Grab the initial Twitter account to tweet from. ACAccount *twitterAccount = [accountsArray objectAtIndex:0]; NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init]; [tempDict setValue:@"Twitter_Name" forKey:@"screen_name"]; [tempDict setValue:@"true" forKey:@"follow"]; //Code specific to iOS5 TWRequest *followRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"https://api.twitter.com/1/friendships/create.json"] parameters:tempDict requestMethod:TWRequestMethodPOST]; [followRequest setAccount:twitterAccount]; [followRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { NSString *output = [NSString stringWithFormat:@"HTTP response status: %i", [urlResponse statusCode]]; NSLog(@"%@", output); if (error) { dispatch_async(dispatch_get_main_queue(), ^{ //Update UI to show follow request failed }); } else { dispatch_async(dispatch_get_main_queue(), ^{ //Update UI to show success }); } }]; } } }); }]; } else { dispatch_async(dispatch_get_main_queue(), ^{ //Update UI to show follow request completely failed }); }
Happy coding :)
source share