从iOS的twitter获取用户个人资料(尤其是电子邮件地址)
我从几天以来一直在寻找如何根据他/她的Twitter帐户获取用户详细信息 。 现在首先,让我解释一下我想要做什么。
在我的情况下,用户将被提供一个选项来注册 Twitter帐户。 所以,基于用户的Twitter帐户,我想能够获得用户的详细信息(例如电子邮件ID,姓名,头像,出生date,性别等),并将这些详细信息保存在数据库中。 现在,很多人可能会build议我使用ACAccount
和ACAccountStore
,这个类提供了访问,操作和存储账户的接口。 但在我的情况下,即使用户没有在iOS设置应用中为Twitterconfiguration帐户,我也想注册用户。 我希望用户导航到Twitter的login屏幕(在Safari或在App本身,或使用任何其他select)。
我也在这里提到了有API列表的Twitter的文档。 但我很困惑应该如何提供用户login屏幕login到Twitter帐户,以及如何获取个人资料信息。 我应该使用UIWebView
,还是将用户redirect到Safari或采用其他方式?
请尽可能提供一些代码片段。
在此先感谢,我绝望的解决scheme!
Twitter为此提供了一个漂亮的框架,您只需将其整合到您的应用程序中即可。
https://dev.twitter.com/twitter-kit/ios
它有一个简单的login方法: –
// Objective-C TWTRLogInButton* logInButton = [TWTRLogInButton buttonWithLogInCompletion: ^(TWTRSession* session, NSError* error) { if (session) { NSLog(@"signed in as %@", [session userName]); } else { NSLog(@"error: %@", [error localizedDescription]); } }]; logInButton.center = self.view.center; [self.view addSubview:logInButton];
这是获取用户资料信息的过程:
/* Get user info */ [[[Twitter sharedInstance] APIClient] loadUserWithID:[session userID] completion:^(TWTRUser *user, NSError *error) { // handle the response or error if (![error isEqual:nil]) { NSLog(@"Twitter info -> user = %@ ",user); NSString *urlString = [[NSString alloc]initWithString:user.profileImageLargeURL]; NSURL *url = [[NSURL alloc]initWithString:urlString]; NSData *pullTwitterPP = [[NSData alloc]initWithContentsOfURL:url]; UIImage *profImage = [UIImage imageWithData:pullTwitterPP]; } else { NSLog(@"Twitter error getting profile : %@", [error localizedDescription]); } }];
我想rest你可以从Twitter工具包教程find,它也允许通过调用TwitterAuthClient#requestEmail方法,传递一个有效的TwitterSession和callback请求用户的电子邮件。
最后,在与sdk-feedback@twitter.com
进行了长时间的交谈后,我的应用程序被列入白名单。 这是故事:
-
发送邮件到
sdk-feedback@twitter.com
提供一些关于您的应用程序的详细信息,如消费者密钥,应用程序的应用程序商店链接,隐私政策链接,元数据,关于如何login我们的应用程序的说明。 在邮件中提到您想要访问您的应用程序内的用户电子邮件地址。 -
他们将审核您的应用程序并在2-3个工作日内回复您。
-
一旦他们说你的应用程序被列入白名单,在Twitter开发者门户中更新你的应用程序的设置。 login到apps.twitter.com和:
- 在“设置”标签上,添加服务条款和隐私权政策url
- 在“权限”选项卡上,更改令牌的范围以请求电子邮件。 只有当您的应用获得白名单时,才会看到此选项。
把你的手放在代码上:
同意Vizllx的声明: “Twitter 为此 提供了一个美丽的框架,您只需将其整合到您的应用程序中即可。”
获取用户邮箱地址
-(void)requestUserEmail { if ([[Twitter sharedInstance] session]) { TWTRShareEmailViewController *shareEmailViewController = [[TWTRShareEmailViewController alloc] initWithCompletion:^(NSString *email, NSError *error) { NSLog(@"Email %@ | Error: %@", email, error); }]; [self presentViewController:shareEmailViewController animated:YES completion:nil]; } else { // Handle user not signed in (eg attempt to log in or show an alert) } }
获取用户configuration文件
-(void)usersShow:(NSString *)userID { NSString *statusesShowEndpoint = @"https://api.twitter.com/1.1/users/show.json"; NSDictionary *params = @{@"user_id": userID}; NSError *clientError; NSURLRequest *request = [[[Twitter sharedInstance] APIClient] URLRequestWithMethod:@"GET" URL:statusesShowEndpoint parameters:params error:&clientError]; if (request) { [[[Twitter sharedInstance] APIClient] sendTwitterRequest:request completion:^(NSURLResponse *response, NSData *data, NSError *connectionError) { if (data) { // handle the response data eg NSError *jsonError; NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError]; NSLog(@"%@",[json description]); } else { NSLog(@"Error code: %ld | Error description: %@", (long)[connectionError code], [connectionError localizedDescription]); } }]; } else { NSLog(@"Error: %@", clientError); } }
希望能帮助到你 !!!
在Twitter中,您只能获取user_name
和user_id
。 这是非常安全的,你不能获取email id
, birth date
, gender
等。与Facebook相比,Twitter是非常保密的供应数据。
需要ref: link1 。