Twitter SLRequest performRequestWithHandler - Could not prepare the URL request

佐手、 提交于 2019-12-08 08:35:07

问题


I am trying to implement "Follow Us On Twitter" in my iOS app. Here is my code. But it give error "Could not prepare the URL request". Please help!

ACAccountStore *accountStore = [[ACAccountStore alloc] init];
ACAccountType *accountType = [accountStore
                          accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
[accountStore
 requestAccessToAccountsWithType:accountType
 options:NULL
 completion:^(BOOL granted, NSError *error) {
     if (granted) {
         NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init];
         [tempDict setValue:@"a4arpan" forKey:@"screen_name"];
         [tempDict setValue:@"true" forKey:@"follow"];
         SLRequest *postRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter
                                                     requestMethod:SLRequestMethodPOST
                                                               URL:[NSURL URLWithString:@"https://api.twitter.com/1.1/friendships/create.json"]
                                                        parameters:tempDict];

         ACAccount * twitterAccount = [[ACAccount alloc] initWithAccountType:accountType];
         twitterAccount.username = twitterUsername;
         [postRequest setAccount:twitterAccount];
         [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {

             if (responseData) {
                 if (urlResponse.statusCode >= 200 && urlResponse.statusCode < 300) {
                     NSError *jsonError;
                     NSDictionary *timelineData =
                     [NSJSONSerialization
                      JSONObjectWithData:responseData
                      options:NSJSONReadingAllowFragments error:&jsonError];

                     if (timelineData) {
                         NSLog(@"Timeline Response: %@\n", timelineData);
                     }
                     else {
                         // Our JSON deserialization went awry
                         NSLog(@"JSON Error: %@", [jsonError localizedDescription]);
                     }

                     if ([urlResponse statusCode] == 200) {
                         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Follow us successfull" message:nil delegate:nil cancelButtonTitle:@"Thanx" otherButtonTitles:nil, nil];
                         [alert show];
                     }
                     else {
                         if ([tpAppMode isEqualToString:@"sandbox"])
                             NSLog(@"%@", [error localizedDescription]);

                         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Follow us Failed" message:nil delegate:nil cancelButtonTitle:@"Thanx" otherButtonTitles:nil, nil];
                         [alert show];
                     }
                 }
                 else {
                     // The server did not respond successfully... were we rate-limited?
                     NSLog(@"The response status code is %d", urlResponse.statusCode);
                 }
             }
             else {
                 NSString *output = [NSString stringWithFormat:@"HTTP response status: %@ %@", [error localizedDescription], [error localizedFailureReason]];
                 NSLog(@"%@", output);
             }
         }];
     }
     else {
         if ([tpAppMode isEqualToString:@"sandbox"])
             NSLog(@"%@", [error localizedDescription]);

         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Follow us Failed" message:nil delegate:nil cancelButtonTitle:@"Thanx" otherButtonTitles:nil, nil];
         [alert show];
     }
 }];

I have followed all the steps mentioned on Twitter Dev


回答1:


That is how I've done it!

SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://api.twitter.com/1.1/friendships/create.json"] parameters:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"AnatoliyGatt", @"true", nil] forKeys:[NSArray arrayWithObjects:@"screen_name", @"follow", nil]]];
    [request setAccount:[[self twitterAccounts] lastObject]];
    [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
        if(responseData) {
            NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:&error];
            if(responseDictionary) {
                // Probably everything gone fine
            }
        } else {
            // responseDictionary is nil
        }
    }];


来源:https://stackoverflow.com/questions/16945888/twitter-slrequest-performrequestwithhandler-could-not-prepare-the-url-request

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!