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

How do I store & access a Twitter Fabric login session (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 是我应用程序中的一个重要功能,但不是全部要求。

问题是我不知道如何在单击按钮和 logInCompletion 触发时访问 session,而且我不知道初始时要存储哪些变量 login/check 使用该应用程序时。

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

如果当前有一个活动会话,您应该可以像文档中所说的那样访问它

Twitter.sharedInstance().session() 

如果用户未登录,该方法将 return 为零。如果您想知道某人是否已经通过身份验证,只需检查该方法 return 是否是一个值。

如果用户未登录(不存在会话...),Twitter 工具包会自动显示登录屏幕。 但是,在调用任何 future 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 (e.g. attempt to log in or show an alert)
    }
}

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

要访问 Swift 4 中已登录用户会话的 authToken、userName 或 userID 是:

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