Не удается получить текущий токен FBSDKAccessToken правильно в swift 3 / FBSDK 4.17

Я использовал функцию FBSDKAccessToken.currentAccessToken (), чтобы получить FB Token, который работал правильно, до тех пор, пока я не перенесла свое приложение в swift 3 и 4.17 SDK. Теперь функция была переименована в FBSDKAccessToken.current () и равна нулю, когда делегат приложения перезагружается. Я выполнил несколько тестов, и мне удалось получить токен после перезапуска моего приложения, и я уже входил в FB ранее, но это не то поведение, которое я ожидал.

EDIT: я вернулся к 4.15 и снова переработал.

Вот код в моем AppDelegate:

func applicationDidBecomeActive(_ application: UIApplication) { FBSDKAppEvents.activateApp(); } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> (Bool) { let wasHandled: Bool = FBSDKApplicationDelegate.sharedInstance().application(application ,open:url ,sourceApplication:sourceApplication ,annotation:annotation) if (wasHandled) { if let fbtoken = FBSDKAccessToken.current() { loginWithFacebook(fbtoken.tokenString); }else{ print("no current token") } } return wasHandled } func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { let wasHandled: Bool = FBSDKApplicationDelegate.sharedInstance().application( app, open: url as URL!, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, annotation: options[UIApplicationOpenURLOptionsKey.annotation] ) if (wasHandled) { if let fbtoken = FBSDKAccessToken.current() { loginWithFacebook(fbtoken.tokenString); }else{ print("no current token") } } return wasHandled; } 

Спасибо за вашу помощь 🙂 Денис

One Solution collect form web for “Не удается получить текущий токен FBSDKAccessToken правильно в swift 3 / FBSDK 4.17”

По какой-то причине это больше не работает.

Если вы используете FBSDKLoginButton вы должны использовать FBSDKLoginButtonDelegate для ожидания обратного вызова.

 class LoginView: UIViewController, FBSDKLoginButtonDelegate { @IBOutlet weak var facebookButton: FBSDKLoginButton! override func viewDidLoad() { facebookButton.delegate = self } //Called at the end of the user connection func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) { if ((error) != nil) { //Process error } else if result.isCancelled { // Handle cancellations print("result is canceled") } else { if let fbToken = result.token.tokenString { print(fbToken) } } } func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) { print("logout from FB") } } 

В качестве альтернативы вы также можете использовать FBSDKLoginManager. Ознакомьтесь с документом:

https://developers.facebook.com/docs/reference/ios/current/class/FBSDKLoginManager/

Надеюсь, эта помощь!

  • Добавить UIViewController в UIScrollView swift 3
  • Работа со значениями NSNumber и Integer в Swift 3
  • UIAlertController не работает с Swift 3.0
  • Swift3 Случайный метод расширения
  • Получение ошибки Неподдерживаемый тип гранта?
  • Bundle.main.path (forResource: ofType: inDirectory :) возвращает nil
  • UiTextField: canPerformAction, caretRectForPosition, selectionRectsForRange не вызываются (Swift 3)
  • Изменить версию Carthage Swift
  • Как получить индекс текущего элемента всех элементов в Tableview из SearchBar
  • Как использовать для цикла для создания массива Int в Swift 3
  • Что делают параметры JSONSerialization и как они меняют jsonResult?
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.