Я использую следующую функцию, чтобы использовать вход FacebookSDK для моих бэкэнд-пользователей:
func application(application: UIApplication,
openURL url: NSURL,
sourceApplication: String?,
annotation: AnyObject) -> Bool {
let result = FBSDKApplicationDelegate.sharedInstance().application(application,
openURL: url,
sourceApplication: sourceApplication,
annotation: annotation)
if result {
let token = FBSDKAccessToken.currentAccessToken()
let fieldsMapping = [
"id" : "facebookId",
"name" : "name",
"birthday": "birthday",
"first_name": "fb_first_name",
"last_name" : "fb_last_name",
"gender": "gender",
"email": "email"
]
// REQUEST FB IMAGE
let request = FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"email"], tokenString: token.tokenString, version: nil, HTTPMethod: "GET")
request.startWithCompletionHandler({ (connection, result, error : NSError!) in
if error == nil {
let facebookID = result["id"]! as! String
let avatarURL = "https://graph.facebook.com/\(facebookID)/picture?type=normal"
updateBackendlessUser(facebookID, avatarURL: avatarURL)
} else {
print(error)
}
})
// REQUEST FB IMAGE END
backendless.userService.loginWithFacebookSDK(
token,
fieldsMapping: fieldsMapping,
response: { (user: BackendlessUser!) -> Void in
// self.backendless.userService.currentUser = user
print("user: \(user)")
dispatch_async(dispatch_get_main_queue()) {
let lcVC = stb.instantiateViewControllerWithIdentifier("LoadContentVC")
self.window?.rootViewController = lcVC
self.window?.makeKeyAndVisible()
}
},
error: { (fault: Fault!) -> Void in
print("Server reported an error: \(fault)")
})
}
return result
}
Обычно это работает нормально. Сегодня я хотел проверить свой интерфейс на симуляторе iPad Air2. Логин привел к fatal error: unexpectedly found nil while unwrapping an Optional value
.
Проверил еще раз на своем айфоне. Еще работает.
Я использую последнюю версию FB SDK (пробовал обновить модуль):
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
Xcode 8 и Swift 2.3
Я попытался поместить блок REQUEST FB IMAGE
в оператор if для проверки token != nil
, но это привело к сбою в backendless.userService.loginWithFacebookSDK
Почему между физическим iPhone (6S Plus iOS 10.0) и iPad Air2 (iOS 10.0) результаты разные? Помощь очень ценится.
PS: эта строчка во мне didFinishLaunchingWithOptions
:
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)