我可以使用这个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是我的应用程序中的一个重要功能,但不是一个完整的要求。
问题是我不知道如何在点击按钮和session
触发之外访问logInCompletion
,并且我不知道在初次登录/使用应用时检查时要存储哪些变量。
我已经多次阅读过Twitter Fabric文档,但它不是用swift编写的,所以它很混乱。有任何想法吗?谢谢
如果当前有活动会话,您应该能够像文档中所说的那样访问它
Twitter.sharedInstance().session()
如果用户未登录,则该方法将返回nil。如果您想知道某人是否已经过身份验证,请检查该方法是否返回值。
如果用户尚未登录,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 (e.g. attempt to log in or show an alert)
}
}
您甚至不必担心存储和管理access token
和access token secret
。
要访问authToken,在Swift 4中登录用户会话的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)
}
})