2015-04-12 5 views
1

Я строю вход в iOS Twitter. При попытке получить имя экрана нового пользователя, при первом входе в систему он не получает имя экрана, во втором входе в него. Как я могу сделать это так, чтобы получить имя экрана при первом входе в систему?Twitter Войти Parse iOS

Вот код, я использую:

функции
[PFTwitterUtils logInWithBlock:^(PFUser *user, NSError *error) { 
    if (!user) { 
     NSLog(@"Uh oh. The user cancelled the Twitter login."); 
     return; 
    } else if (user.isNew) { 
     NSLog(@"User signed up and logged in with Twitter!"); 

     NSLog(@"%@", [PFTwitterUtils twitter].screenName); 
     [self performSegueWithIdentifier: @"hasUsername" sender: self]; 
    } else { 
     NSLog(@"User logged in with Twitter!"); 
     NSLog(@"%@", [PFTwitterUtils twitter].screenName); 
     [self performSegueWithIdentifier: @"hasUsername" sender: self]; 
    }  
}]; 

NSLog просто возвращают нулевое значение на первом входе в систему.

+0

Вот ответ на ваш вопрос: http://stackoverflow.com/a/30409439/277021 – Cyprian

ответ

0

Вот что я использую при использовании Twitter логина и Разбирают:

[PFTwitterUtils logInWithBlock:^(BOOL succeeded, NSError *error) { 
    if ([PFTwitterUtils isLinkedWithUser:[PFUser currentUser]]) { 
     NSURL *info = [NSURL URLWithString:@"https://api.twitter.com/1.1/account/settings.json"]; 
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:info]; 
     [[PFTwitterUtils twitter] signRequest:request]; 
     [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 
      if (!!data) { 
       NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; 
       NSString *userName = dict[@"screen_name"]; 
       userName = [userName stringByReplacingOccurrencesOfString:@"Twitter:" withString:@""]; 

       PFUser *user = [PFUser currentUser]; 
       user[@"Twitter"] = userName; 
       [user saveEventually]; 
      } else { 
       //uh oh, no twitter response 
      } 
     }]; 
    } else { 
     //uh oh, failed login 
    } 
}]; 

Скопирован из другого ответа на: Twitter Screen Name returning a null in Parse

+0

Это был я в предыдущем разделе. Это только захватывает имя экрана во втором входе в систему. – spogebob92

0

я наткнулся на тот же вопрос, добавив щебетать счета на тренажер IOS исправил это для меня. Вы можете сделать это, выбрав Настройки -> Twitter и оттуда создайте или зарегистрируйтесь.

0

Вы можете вызвать [PFTwitterUtils twitter] .screenName, но сделать это после блока [PFTwitterUtils loginWithBlock ...]. Раньше это не настройка, поэтому вы должны запускать ее дважды. Итак:

[PFTwitterUtils logInWithBlock:^(PFUser *user, NSError *error) { 

    some stuff 

    }  
}]; 
NSLog(@"%@", [PFTwitterUtils twitter].screenName); 

Вы все еще можете загрузить экран приветствия на user.isNew и тому подобное, но загрузка ScreenName, ID и т.д., в сети [PFTwitterUtils твиттер] не будет работать, пока блок не закончился.

Смежные вопросы