Twitter – 关注按钮
我目前正在使用iOS应用程序进行开发,该应用程序从流式api中获取一些推文。 因此,我使用用户的用户名和密码进行身份validation。 除此之外,我想让用户有机会在twitter上关注一些人。 我创建了一个UIButton,现在想要调用一个url或类似的东西来跟踪特定用户。 这可能吗?
如果您使用iOS 6在Twitter上关注用户:
-(void)followMe { ACAccountStore *accountStore = [[ACAccountStore alloc] init]; ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; [accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) { if(granted) { // Get the list of Twitter accounts. NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; // For the sake of brevity, we'll assume there is only one Twitter account present. // You would ideally ask the user which account they want to tweet from, if there is more than one Twitter account present. if ([accountsArray count] > 0) { // Grab the initial Twitter account to tweet from. ACAccount *twitterAccount = [accountsArray objectAtIndex:0]; NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init]; [tempDict setValue:@"twitter_name" forKey:@"screen_name"]; [tempDict setValue:@"true" forKey:@"follow"]; NSLog(@"*******tempDict %@*******",tempDict); //requestForServiceType SLRequest *postRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://api.twitter.com/1.1/friendships/create.json"] parameters:tempDict]; [postRequest setAccount:twitterAccount]; [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { NSString *output = [NSString stringWithFormat:@"HTTP response status: %i Error %d", [urlResponse statusCode],error.code]; NSLog(@"%@error %@", output,error.description); }]; } } }]; }
只需发一个post
https://api.twitter.com/1.1/friendships/create.json POST Data: user_id=1401881&follow=true
参考
-(void)twitterButton { NSString *twitterAccount= @"yourAccountName"; NSArray *urls = [NSArray arrayWithObjects: @"twitter://user?screen_name={handle}", // Twitter @"tweetbot:///user_profile/{handle}", // TweetBot @"echofon:///user_timeline?{handle}", // Echofon @"twit:///user?screen_name={handle}", // Twittelator Pro @"x-seesmic://twitter_profile?twitter_screen_name={handle}", // Seesmic @"x-birdfeed://user?screen_name={handle}", // Birdfeed @"tweetings:///user?screen_name={handle}", // Tweetings @"simplytweet:?link=http://twitter.com/{handle}", // SimplyTweet @"icebird://user?screen_name={handle}", // IceBird @"fluttr://user/{handle}", // Fluttr @"http://twitter.com/{handle}", nil]; UIApplication *application = [UIApplication sharedApplication]; for (NSString *candidate in urls) { NSURL *url = [NSURL URLWithString:[candidate stringByReplacingOccurrencesOfString:@"{handle}" withString:twitterAccount]]; if ([application canOpenURL:url]) { UIWebView* Twitterweb =[[UIWebView alloc] initWithFrame:CGRectMake(.....)]; Twitterweb.delegate=nil; Twitterweb.hidden=NO; NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; [Twitterweb loadRequest:requestObj]; [self.view addSubview:Twitterweb]; return; } } }
我按照@Mohd Asim的回答实现了以下Swift代码,感谢您的回答。 :d
版本:iOS 10,Swift 3
Twitter API:1.1
( https://dev.twitter.com/rest/reference/post/friendships/create )
class SocialHelper { static func FollowAppTwitter() { let accountStore = ACAccountStore() let twitterType = accountStore.accountType(withAccountTypeIdentifier: ACAccountTypeIdentifierTwitter) accountStore.requestAccessToAccounts(with: twitterType, options: nil, completion: { (isGranted, error) in guard let userAccounts = accountStore.accounts(with: twitterType), userAccounts.count > 0 else { return } guard let firstActiveTwitterAccount = userAccounts[0] as? ACAccount else { return } // post params var params = [AnyHashable: Any]() //NSMutableDictionary() params["screen_name"] = "pixelandme" params["follow"] = "true" // post request guard let request = SLRequest(forServiceType: SLServiceTypeTwitter, requestMethod: SLRequestMethod.POST, url: URL(string: "https://api.twitter.com/1.1/friendships/create.json"), parameters: params) else { return } request.account = firstActiveTwitterAccount // execute request request.perform(handler: { (data, response, error) in print(response?.statusCode) print(error?.localizedDescription) }) }) } }
不用谢;)