首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Facebook SDK登录从不回调我在iOS 9上的应用程序

Facebook SDK登录从不回调我在iOS 9上的应用程序
EN

Stack Overflow用户
提问于 2015-08-31 01:24:02
回答 9查看 23.7K关注 0票数 65

我已经按照this指南更新了我的应用程序,当使用iOS 9SDK构建时,可以使用Facebook SDK4.6正常工作。

现在,当我点击登录按钮时,会出现一个Safari视图控制器(不是应该重定向到Facebook应用程序吗?),但在接受许可后,Safari视图控制器永远不会被关闭。它加载一个新的空白页面,然后坐在那里什么也不做。如果我点击完成按钮,返回的FBSDKLoginManagerLoginResultisCancelled为true。

SDK选择Safari视图控制器而不是Facebook应用程序是正常的吗?为什么我在登录完成后没有收到回调?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2015-08-31 03:18:16

事实证明,在iOS 9上,当实现UIApplicationDelegateapplication:openURL:options:时,将不会调用application:openURL:sourceApplication:annotation:

所以我要做的就是从FBSDKApplicationDelegateapplication:openURL:sourceApplication:annotation:调用UIApplicationDelegateapplication:openURL:options:

代码语言:javascript
复制
- (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]];
}
票数 132
EN

Stack Overflow用户

发布于 2016-03-18 21:19:56

对于Swift来说,这对我很有效(在AppDelegate.swift中添加它):

代码语言:javascript
复制
@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])
}

代码语言:javascript
复制
@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。我希望这能帮到你!

票数 32
EN

Stack Overflow用户

发布于 2016-10-09 16:19:51

对于Swift 3和Facebook SDK 4.16.0:

将以下代码添加到AppDelegate.swift

代码语言:javascript
复制
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32299271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档