在ios 7中使用twitter登录

时间:2014-01-18 09:22:01

标签: twitter ios7 twitter-oauth social-framework acaccount

我在做登录功能。 其中 -

  
      
  1. 用户将提供Twitter电子邮件ID登录,如果登录成功,我的应用程序将导航用户到我的应用程序的内部屏幕。

  2.   
  3. 如果用户已从用户的设备ios设置配置了Twitter帐户。我的应用从那里获取用户的电子邮件ID,它将导航   进入我的应用程序的第二个屏幕。

  4.   
  5. 如果用户尚未从ios设置配置Twitter帐户,那么,如果用户通过我的应用程序登录屏幕上的Twitter登录按钮,则   将用户导航到用户必须提供的Twitter页面   电子邮件ID(推特ID)和密码,如果登录成功   应该回到我的应用程序的内部屏幕(与登录相同的功能   与facebook)。

  6.   

我怎么能实现这一目标。提前谢谢。

1 个答案:

答案 0 :(得分:5)

首先,您无法使用iOS7框架或Twitter的Native API从twitter的API获取用户电子邮件地址。
如果您想获取用户电子邮件地址,可以要求用户手动输入。这就是Twitter人们在他们的API文档中所说的。对于您的Point 2和3,这里是使用iOS7方式的示例代码

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) // check Twitter is configured in Settings or not
{
    self.accountStore = [[ACAccountStore alloc] init]; // you have to retain ACAccountStore

    ACAccountType *twitterAcc = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

    [self.accountStore requestAccessToAccountsWithType:twitterAcc options:nil completion:^(BOOL granted, NSError *error)
     {
         if (granted)
         {
             self.twitterAccount = [[self.accountStore accountsWithAccountType:twitterAcc] lastObject];
             NSLog(@"Twitter UserName: %@, FullName: %@", self.twitterAccount.username, self.twitterAccount.userFullName);
             [self getTwitterEmail]; // here you can ask user to enter email address. Its up to you how you ask user about it. Either in alert View or in Text Field.
         }
         else
         {
             if (error == nil) {
                 NSLog(@"User Has disabled your app from settings...");
             }
             else
             {
                 NSLog(@"Error in Login: %@", error);
             }
         }
     }];
}
else
{
    NSLog(@"Not Configured in Settings......"); // show user an alert view that Twitter is not configured in settings.
}