如何存储和访问Twitter Fabric登录会话(iOS / Swift)?

我可以使用这个Twitter Fabric代码通过我的应用程序登录Twitter:

let logInButton = TWTRLogInButton(logInCompletion: { (session: TWTRSession!, error: NSError!) in // play with Twitter session if (session != nil) { println("signed in as \(session.userName)"); self.TWUsernameLabel.text = "Logged in as @" + session.userName } else { println("error: \(error.localizedDescription)"); } }) 

当我点击登录按钮时,它会提示我批准登录,然后登录,或者它知道我已经批准了登录,它会让我登录。这就像一个魅力,并花了十分钟设置。 惊人。

我已经有一个基于电子邮件的登录来访问该应用程序。 我想将用户登录的Twitter帐户存储在同一个数据库中,因此当用户使用他们的电子邮件登录时,我已经知道他们的Twitter(如果他们之前已经登录)并且他们不需要再次登录。 我进行电子邮件登录的原因是因为Twitter是我的应用程序中的一个重要function,但不是全部要求。

问题是我不知道如何在单击按钮和logInCompletion触发时访问session以外的内容,并且我不知道在初次登录/使用应用程序时检查时要存储的变量。

我已经多次阅读过Twitter Fabric文档,但它并不是用swift编写的,所以它非常令人困惑。 有任何想法吗? 谢谢

如果当前有活动会话,您应该能够像文档所说的那样访问它

 Twitter.sharedInstance().session() 

如果用户未登录,则该方法将返回nil。 如果您想知道某人是否已经过身份validation,请检查该方法是否返回值。

如果用户尚未登录,Twitter工具包会自动显示登录屏幕(不存在会话..)。 但是,在调用任何未来的API之前,只需检查会话是否有效。 在某些API中,您可能还需要通过此会话。

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

您甚至不必担心存储和管理access tokenaccess token secret

要访问authToken,用户名或Swift 4中登录用户会话的userID是:

 Twitter.sharedInstance().logIn(completion: { (session, error) in if (session != nil) { print(session!.authToken) print(session!.userName) print(session!.userID) } else { print(error?.localizedDescription) } })