我已经按照this指南更新了我的应用程序,当使用iOS 9SDK构建时,可以使用Facebook SDK4.6正常工作。
现在,当我点击登录按钮时,会出现一个Safari视图控制器(不是应该重定向到Facebook应用程序吗?),但在接受许可后,Safari视图控制器永远不会被关闭。它加载一个新的空白页面,然后坐在那里什么也不做。如果我点击完成按钮,返回的FBSDKLoginManagerLoginResult
的isCancelled
为true。
SDK选择Safari视图控制器而不是Facebook应用程序是正常的吗?为什么我在登录完成后没有收到回调?
发布于 2015-08-31 03:18:16
事实证明,在iOS 9上,当实现UIApplicationDelegate
的application:openURL:options:
时,将不会调用application:openURL:sourceApplication:annotation:
。
所以我要做的就是从FBSDKApplicationDelegate
的application:openURL:sourceApplication:annotation:
调用UIApplicationDelegate
的application:openURL:options:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
return [[FBSDKApplicationDelegate sharedInstance] application:app
openURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}
发布于 2016-03-18 21:19:56
对于Swift来说,这对我很有效(在AppDelegate.swift中添加它):
@available(iOS 9.0, *)
func application(application: UIApplication,openURL url: NSURL, options: [String: AnyObject]) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application,
openURL: url,
sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String,
annotation: options [UIApplicationOpenURLOptionsAnnotationKey])
}
和
@available(iOS, introduced=8.0, deprecated=9.0)
func application(application: UIApplication,openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application,
openURL: url,
sourceApplication: sourceApplication!,
annotation: annotation)
}
在每种情况下,请记住将import FBSDKCoreKit
与其他import
语句一起添加。
这基本上就是谷歌SignIn所使用的。如果它仍然不能工作,您需要按照FaceBook文档中指定的方式设置委托和info.plist。我希望这能帮到你!
发布于 2016-10-09 16:19:51
对于Swift 3和Facebook SDK 4.16.0:
将以下代码添加到AppDelegate.swift
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}
https://stackoverflow.com/questions/32299271
复制相似问题