【发布时间】:2020-05-07 00:32:30
【问题描述】:
我有以下代码:
import UIKit
import FacebookLogin
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if AccessToken.current != nil {
// Already logged-in
// Redirect to Home View Controller
goToHome()
}
// Add LoginButton
let loginButton = FBLoginButton(permissions: [ .publicProfile, .email, .userFriends ])
let screenSize:CGRect = UIScreen.main.bounds
let screenHeight = screenSize.height // real screen height
//let's suppose we want to have 10 points bottom margin
let newCenterY = screenHeight - loginButton.frame.height - 20
let newCenter = CGPoint(x: view.center.x, y: newCenterY)
loginButton.center = newCenter
view.addSubview(loginButton)
// Triggered after every successfully login / logout
NotificationCenter.default.addObserver(forName: .AccessTokenDidChange, object: nil, queue: OperationQueue.main) { [weak self] _ in
if AccessToken.current != nil {
// Successfully just Logged in
// Redirect to Home View Controller
self?.goToHome()
} else {
// Successfully just Logged out
}
}
}
func goToHome() {
let storyboard = UIStoryboard(name: "HomeAfterLogIn", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "HomeAfterLogInViewController") // I called mine like that (check screenshot below)
self.navigationController?.pushViewController(vc, animated: true)
}
}
此代码允许用户使用 Facebook SDK 登录我的应用程序。 LaunchScreen.storyboard 如下:
然后通向 Main.storyboard,如下所示:
如果用户登录成功,他们将被带到 HomeAfterLogIn.storyboard,如下所示:
但是,一旦用户登录,即用户成功登录,则此页面会持续加载,显示“登录”标签,然后它会一遍又一遍地重新加载,而我只希望它加载一次。如果用户之前登录过,页面只加载一次,代码如下:
if AccessToken.current != nil {
// Already logged-in
// Redirect to Home View Controller
goToHome()
}
但如果用户是新用户/第一次用户,它会循环,所以我认为错误在这里:
// Triggered after every successfully login / logout
NotificationCenter.default.addObserver(forName: .AccessTokenDidChange, object: nil, queue: OperationQueue.main) { [weak self] _ in
if AccessToken.current != nil {
// Successfully just Logged in
// Redirect to Home View Controller
self?.goToHome()
} else {
// Successfully just Logged out
}
}
【问题讨论】:
标签: ios swift xcode facebook sdk