Hes*_*gid 65 facebook objective-c ios
我已按照本指南更新我的应用程序,以便在使用iOS 9 SDK构建时使用Facebook SDK 4.6正常工作.
当我点击登录按钮时,会出现一个Safari视图控制器(不应该重定向到Facebook应用程序吗?),但在接受权限后,Safari视图控制器永远不会被解雇.它会加载一个新的空白页面并在那里无所事事.如果我点击完成按钮,返回FBSDKLoginManagerLoginResult的isCancelled是真的.
SDK是否通过Facebook应用程序选择Safari视图控制器是正常的吗?为什么登录完成后我没有得到回调?
Hes*_*gid 132
原来,在iOS 9时UIApplicationDelegate的application:openURL:options:实施,application:openURL:sourceApplication:annotation:将不会被调用.
因此,我不得不做的是调用FBSDKApplicationDelegate的application:openURL:sourceApplication:annotation:从UIApplicationDelegateS'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]];
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*vid 32
对于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])
}
Run Code Online (Sandbox Code Playgroud)
和
@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)
}
Run Code Online (Sandbox Code Playgroud)
在每种情况下,请记住添加import FBSDKCoreKit其他import语句.
它基本上是Google SignIn使用的.如果它仍然不起作用,您需要设置委托和您的info.plist,就像它在FaceBook Docs中指定的那样.我希望这有帮助!
JT5*_*501 15
对于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)
}
Run Code Online (Sandbox Code Playgroud)
对于那些遇到iOS10相同问题的人我添加了这个:
@available(iOS 9.0, *)
func application(_ application: UIApplication, openURL url: URL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}
Run Code Online (Sandbox Code Playgroud)
这应该工作,但现在它只是一个解决方法
| 归档时间: |
|
| 查看次数: |
22766 次 |
| 最近记录: |