使用iOS Social / Accounts框架检索twitter用户数据

有没有一种方法可以使用iOS社交/帐户框架从Twitter获取用户数据(名字,姓氏和电子邮件)? 我可以用Facebook做到这一点,但是我对Twitter所做的每个SLRequest都会返回一个空数组。

这是我现在的代码。 我已经尝试了几个不同的参数URLS,但我没有任何运气。

- (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); }]; 

}

是的,您可以使用ACAccountStore获取用户信息,您必须保留ACAccountStore: .h

 @property (nonatomic, strong) ACAccountStore *account; 

.M

  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); } }); }]; }); } }]; } } 

我们可以。

  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 } 

对于电子邮件ID,我们也可以得到用户的电子邮件ID,看到更新的答案听到