我正在使用iOS 10
Swift 3
來集成FB Login
。我遵循了Facebook
文檔中的所有步驟。現在的問題是,成功登錄後,它不會返回任何值,也不會讓用戶回到應用程序。使用Swift 3進行FB登錄沒有返回任何值,並且在成功登錄後不會返回用戶
注意:在Swift 2
中完全相同。
我正在使用iOS 10
Swift 3
來集成FB Login
。我遵循了Facebook
文檔中的所有步驟。現在的問題是,成功登錄後,它不會返回任何值,也不會讓用戶回到應用程序。使用Swift 3進行FB登錄沒有返回任何值,並且在成功登錄後不會返回用戶
注意:在Swift 2
中完全相同。
嗨我提出這個問題到facebook開發人員的支持,問題是我沒有實現iOS10的正確委託方法。你可以找到正確的委託執行here
import UIKit
import CoreData
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
public func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
// Override point for customization after application launch.
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}
public func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(
app,
open: url as URL!,
sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String,
annotation: options[UIApplicationOpenURLOptionsKey.annotation]
)
}
public func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(
application,
open: url as URL!,
sourceApplication: sourceApplication,
annotation: annotation)
}
}
對我來說,「FBSDKApplicationDelegate」沒有最新的Facebook斯威夫特SDK版本v0.2.0工作
你可以在這裏找到我的v0.2.2實施:https://gist.github.com/mbecker/bdbd28cd11394085c01cf442aaa42c72
//
// AppDelegate.swift
//
// Created by Mats Becker on 9/25/16.
// Copyright © 2016 safari.digital. All rights reserved.
//
import UIKit
import FacebookCore
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
}
func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}
func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
// Call the 'activate' method to log an app event for use
// in analytics and advertising reporting.
AppEventsLogger.activate(application)
}
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
public func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return SDKApplicationDelegate.shared.application(
app,
open: url as URL!,
sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String,
annotation: options[UIApplicationOpenURLOptionsKey.annotation]
)
}
public func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return SDKApplicationDelegate.shared.application(
application,
open: url as URL!,
sourceApplication: sourceApplication,
annotation: annotation
)
}
}
不要忘記設置鑰匙扣共享 項目目標 - >性能 - >鑰匙扣共享 - >切換開關ON
你可以按照這個 http://ashishkakkad.com/2015/05/facebook-login-swift-language-ios/
EVN:iOS的10時,Xcode 8.3.2,斯威夫特3,Facebook的SDK-迅速-0.2.0 和測試工作。
由於上面的答案被指定爲不建議使用的代碼,所以我更改了語法。
https://gist.github.com/jgchoi/097b59d85d6b378a81925be93a62fef9
import UIKit
import FacebookCore
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
public func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
// Override point for customization after application launch.
return SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
}
public func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return SDKApplicationDelegate.shared.application(app, open: url, options: options)
}
public func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return SDKApplicationDelegate.shared.application(application, open: url)
}
}
}
我已經經歷了Facebook和Twitter integration.I同樣的問題如下解決了它。
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
let appname:String = options.first?.value as! String
print(appname)
if appname == "com.facebook.Facebook" {
return FBSDKApplicationDelegate.sharedInstance().application(
app,
open: url as URL!,
sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String,
annotation: options[UIApplicationOpenURLOptionsKey.annotation]
)
}
return Twitter.sharedInstance().application(app, open: url, options: options)
}
是您的AppDelegate的最後一個功能部分?我想用它..但它不會自動完成我的。 'application(_:open:sourceApplication:annotation)'一個。 – David