Как удалить кнопку выхода и сохранить сессию на постоянной основе 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() } } }) } } 

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

  • Быстрый язык: как вызвать SecRandomCopyBytes
  • Запускать действие, когда пользователь нажимает на ячейку быстрым
  • UIVisualEffectView исчезает после добавления subview
  • Сделать программным обеспечением UIButton в Swift
  • Неопределенные символы для архитектуры при использовании ELCImagePicker
  • Невозможно преобразовать значение типа '' В ожидаемый тип аргумента ''
  • Почему смещение UICollectionView изменяется при появлении клавиатуры
  • Идентификатор базового идентификатора данных
  • Есть ли способ безопасно делиться учетными данными между приложениями с белым списком, подписанными с разными идентификаторами команд, в последних версиях iOS?
  • Складная форма ввода Swift 3
  • Swift: PrepareForSegue, Swift Cast failure
  • Interesting Posts

    UICollectionView scrollToItemAtIndexPath: и получить свежую позицию ячейки

    Как установить уровень масштабирования для местоположения пользователя в MapView

    iOS: универсальное приложение – релиз только на iPhone

    Обнаружение сбоя приложения при запуске

    Xcode 7 GM не может аутентифицировать репозиторий git

    Изменить подпись времени в MusicSequence

    Проблема с сетчатой ​​сетью высокого разрешения iPad3

    Как создать popover в приложении iPhone?

    Как узнать статус доставки Push Notification

    Импульсная анимация на iPhone

    Размер UILabel неправильно вычисляется при изменении шрифта в UILabel

    Как использовать функцию синхронизации для медленной ускорения функции масштабирования с помощью SpriteKit

    Как мы можем программно определить, на какой версии iOS работает устройство?

    Ошибка приложения ios без ошибок и отчета о сбоях

    Недопустимый путь к изображению. На пути, указанном в ключе «CFBundleIconFile», не найдено изображения: Icon.png

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.