Вопрос

I would like to get user profile information using SLRequest in twitter?

Currently I am coding like

  NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1.1/users/show.json"];
    NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:@"ali",@"screen_name",nil];

    account = [[ACAccountStore alloc] init];
    ACAccountType *twitterAccountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
    NSArray *twitterAccounts = [account accountsWithAccountType:twitterAccountType];

    // Runing on iOS 6
    if ([LoginViewController isTwitterAvailable])
    {
        NSLog(@"In the IFF...... ");
        [account requestAccessToAccountsWithType:twitterAccountType options:NULL completion:^(BOOL granted, NSError *error)
         {
             NSLog(@"in body ");

             if (granted)
             {
                 NSLog(@"in granted ..");


                 SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodGET URL:url parameters:params];

                 [request setAccount:[twitterAccounts lastObject]];

                 dispatch_async(dispatch_get_main_queue(), ^
                                {

                                    [NSURLConnection sendAsynchronousRequest:request.preparedURLRequest queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response1, NSData *data, NSError *error)
                                     {
                                         dispatch_async(dispatch_get_main_queue(), ^
                                                        {
                                                            if (data)
                                                            {
                                                                //NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] ;


                                                                //NSLog(@"data:%@",string);

                                                                NSError* error;


                                                                NSDictionary* dicUser = [NSJSONSerialization
                                                                                      JSONObjectWithData:data

                                                                                      options:kNilOptions 
                                                                                      error:&error];

It returns the whole of the info, not profile info,

How can I get profile info of user who is getting sign in ?

Thanks

Это было полезно?

Решение

Try folowing code giving from one of the live project, you can modify as per your existing structure. Let me know in case of any problem.

  _accountStore = [[ACAccountStore alloc] init]; //Declare accountStore as property and initialize
  ACAccountType *accountType = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
    [_accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error){
        if (granted){
            NSArray *accounts = [_accountStore accountsWithAccountType:accountType];
            if (accounts.count > 0){
                ACAccount *twitterAccount = [accounts lastObject];
                NSDictionary *dict1 = [twitterAccount dictionaryWithValuesForKeys:[NSArray arrayWithObject:@"properties"]];
                NSDictionary *properties = dict1[@"properties"];
                NSDictionary *returnDict = @{@"TwitterID":properties[@"user_id"],@"UserName":twitterAccount.username};
                NSLog(@"Profile details->%@",properties);
            }else{
                NSMutableDictionary* details = [NSMutableDictionary dictionary];
                [details setValue:kTwitterErrorMsg forKey:NSLocalizedDescriptionKey];
                error = [NSError errorWithDomain:@"Domain" code:error.code userInfo:details];
                NSLog(@"Error occured->%@",error.localizedDescription);
            }
        } else {
            NSMutableDictionary* details = [NSMutableDictionary dictionary];
            if(error.code == ACErrorAccountNotFound){
                [details setValue:kTwitterErrorMsg forKey:NSLocalizedDescriptionKey];
            }else if(error.code == ACErrorPermissionDenied || error.code == ACErrorAccessDeniedByProtectionPolicy) {
                [details setValue:kTwitterAccessDeniedMsg forKey:NSLocalizedDescriptionKey];
            }else {
                [details setValue:kTwitterErrorMsg forKey:NSLocalizedDescriptionKey];
            }
            error = [NSError errorWithDomain:@"Domain" code:error.code userInfo:details];
            NSLog(@"Error occured->%@",error.localizedDescription);
        }
    }];

Few macros

#define kTwitterErrorMsg                @"Please set your Twitter account in Settings."
#define kTwitterAccessDeniedMsg         @"Twitter Access denied."
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top