Как удалить кнопку выхода и сохранить сессию на постоянной основе FBSDK IOS с помощью Swift

Я создаю приложение, в котором пользователь может Войти с помощью Facebook. Я получаю информацию о пользователе, такую ​​как изображение профиля Имя пользователя и т. Д. Теперь, когда я нажимаю на кнопку входа в систему с помощью кнопки facebook, FB запрашивает разрешение, я вхожу в систему. Но тогда появляется кнопка «Выход», отображаемая на том же месте, что и кнопка LoginWithFacebook. Я хочу удалить кнопку выхода из системы, потому что я не хочу, чтобы пользователь вышел из системы. Я хочу сохранить сеанс и использовать его до конца, пока приложение не будет установлено, потому что я не хочу, чтобы он каждый раз входил в систему при открытии приложения. Это мой код до сих пор

class ViewController: UIViewController, FBSDKLoginButtonDelegate { @IBOutlet weak var btnFacebook: FBSDKLoginButton! @IBOutlet weak var ivUserProfileImage: UIImageView! @IBOutlet weak var lblName: UILabel! var strFirstName: String! var strLastName: String! var strPictureURL: String! override func viewDidLoad() { super.viewDidLoad() configureFacebook() } func configureFacebook() { btnFacebook.readPermissions = ["public_profile", "email", "user_friends"]; btnFacebook.delegate = self } func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"first_name, last_name, picture.type(large)"]).startWithCompletionHandler { (connection, result, error) -> Void in //fetching first and last name self.strFirstName = (result.objectForKey("first_name") as? String)! self.strLastName = (result.objectForKey("last_name") as? String)! self.strPictureURL = (result.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as? String)! // contactinating first and last name self.lblName.text = "Welcome, \(self.strFirstName) \(self.strLastName)" // assinging image self.ivUserProfileImage.image = UIImage(data: NSData(contentsOfURL: NSURL(string: self.strPictureURL)!)!) } } func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) { let loginManager: FBSDKLoginManager = FBSDKLoginManager() //for logging out from facebook loginManager.logOut() } 

2 Solutions collect form web for “Как удалить кнопку выхода и сохранить сессию на постоянной основе FBSDK IOS с помощью Swift”

Добавьте переменную входа fb вручную в контроллер вида

 let fbLoginBtn = FBSDKLoginButton() 

В вашем представленииDidLoad

 view.addSubView(fbLoginBtn) 

Управлять скрытым состоянием входа btn с помощью проверки FBSDKAccessToken.currentAccessToken() имеет значение или нет

И вы можете FBSDKLoginManager().logOut() программно с помощью FBSDKLoginManager().logOut()

Вы можете скрыть кнопку выхода из системы после входа в систему через facebook, используя приведенный ниже код, например,

  if(FBSDKAccessToken.currentAccessToken() != nil) { self.btnFacebook.hidden = true } else { self.btnFacebook.hidden = false } 

ПРИМЕЧАНИЕ. Вам необходимо проверить это после каждого входа и выхода из вашего кода, чтобы вы могли легко поддерживать этот журнал.

Для сеанса напишите это в viewDidLoad LoginController, чтобы получить информацию о пользователе,

  self.btnFacebook.delegate = self self.btnFacebook.readPermissions = ["public_profile","email","user_friends"] FBSDKProfile.enableUpdatesOnAccessTokenChange(true) NSNotificationCenter.defaultCenter().addObserver(self, selector: "getUserProfile:", name: FBSDKProfileDidChangeNotification, object: nil) if(FBSDKAccessToken.currentAccessToken() != nil) { let accessToken = FBSDKAccessToken.currentAccessToken() if(accessToken != nil) { let req = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"email,name"], tokenString: accessToken.tokenString, version: nil, HTTPMethod: "GET") req.startWithCompletionHandler({ (connection, result, error : NSError!) -> Void in if(error == nil) { let userInfo = result as AnyObject if let _ = userInfo.valueForKey("email") as? NSString { // Extract user info here let userDic : NSDictionary = NSDictionary(dictionary: userInfo as! [NSObject : AnyObject]) print(userDic) } else { // Logout if you want or display error message // let loginManager = FBSDKLoginManager() // loginManager.logOut() } } }) } } 

Вызовите этот метод наблюдателя,

 func getUserProfile(notification : NSNotification) { let accessToken = FBSDKAccessToken.currentAccessToken() if(accessToken != nil) { let req = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"email,name"], tokenString: accessToken.tokenString, version: nil, HTTPMethod: "GET") req.startWithCompletionHandler({ (connection, result, error : NSError!) -> Void in if(error == nil) { let userInfo = result as AnyObject if let _ = userInfo.valueForKey("email") as? NSString { let userDic : NSDictionary = NSDictionary(dictionary: userInfo as! [NSObject : AnyObject]) print(userDic) } else { // logout or error message //let loginManager = FBSDKLoginManager() //loginManager.logOut() } } }) } } 

Надеюсь, что это поможет вам.

  • Войдите в систему с помощью FBSDK, не можете выполнить segue
  • Автоматическое отключение программ не работает
  • Swift: tableView
  • Определить, является ли приложение версией или версией разработки
  • IBoutlets nil в xCode 6 Beta 5 при создании экземпляра ViewController из раскадровки
  • Swift Initializer Mystery
  • ScrollView не прокручивается быстрым
  • Как импортировать модуль с пробелами с помощью @testable
  • Запрос доступа к микрофону не представляется
  • Как установить объект NSDate до полуночи?
  • Позиционирование UITabBar наверху
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.