Retrieving Twitter user data using iOS Social / Accounts frameworks

Is there a way to get user data (first name, last name and email address) from Twitter using iOS social / accounts frameworks? I can do this using Facebook, but every SLRequest I do on Twitter returns an empty array.

Here is the code I received right now. I tried several URLS with different parameters, but I was out of luck.

- (void)populateTwitterAccount { NSURL *twitterURL = [NSURL URLWithString:@"https://api.twitbridge.com/1.1/users/show.json"]; SLRequest *twitterRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodGET URL:twitterURL parameters:nil]; [twitterRequest setAccount:self.twitterAccount]; [twitterRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { NSString *accountDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; NSLog(@"%@", accountDataString); }]; 

}

+4
source share
2 answers

Yes, you can get user information using ACAccountStore , you must save ACAccountStore: .h

 @property (nonatomic, strong) ACAccountStore *account; 

wow

  NSUrl *url = [NSURL URLWithString:@"https://api.twitter.com/1.1/users/show.json"]; NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:twittername,@"screen_name",nil]; account = [[ACAccountStore alloc] init]; ACAccountType *twitterAccountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; NSArray *twitterAccounts = [account accountsWithAccountType:twitterAccountType]; // Runing on iOS 6 if (NSClassFromString(@"SLComposeViewController") && [SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { [account requestAccessToAccountsWithType:twitterAccountType options:NULL completion:^(BOOL granted, NSError *error) { if (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) { // [self loadData:data]; NSString* newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] ; NSLog(@"data:%@",newStr); } }); }]; }); } }]; } else if (NSClassFromString(@"TWTweetComposeViewController") && [TWTweetComposeViewController canSendTweet]) // Runing on iOS 5 { [account requestAccessToAccountsWithType:twitterAccountType withCompletionHandler:^(BOOL granted, NSError *error) { if (granted) { TWRequest *request = [[TWRequest alloc] initWithURL:url parameters:params requestMethod:TWRequestMethodGET]; [request setAccount:[twitterAccounts lastObject]]; dispatch_async(dispatch_get_main_queue(), ^ { [NSURLConnection sendAsynchronousRequest:request.signedURLRequest queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response1, NSData *data, NSError *error) { dispatch_async(dispatch_get_main_queue(), ^ { if (data) { NSString* newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"data:%@",newStr); } }); }]; }); } }]; } } 
+8
source

Yes we can.

  ACAccountStore *account = [[ACAccountStore alloc] init]; ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; NSString *message = _textView.text; //hear before posting u can allow user to select the account NSArray *arrayOfAccons = [account accountsWithAccountType:accountType]; for(ACAccount *acc in arrayOfAccons) { NSLog(@"%@",acc.username); NSDictionary *properties = [acc dictionaryWithValuesForKeys:[NSArray arrayWithObject:@"properties"]]; NSDictionary *details = [properties objectForKey:@"properties"]; NSLog(@"user name = %@",[details objectForKey:@"fullName"]);//full name NSLog(@"user_id = %@",[details objectForKey:@"user_id"]);//user id } 

for email id, we can also get user email id to see updated reply hear

+16
source

Source: https://habr.com/ru/post/1499544/


All Articles