Facebook 登录不会在登录后关闭登录对话框
Facebook Login doesn't doesn't dismiss Login Dialog after login
使用 Facebook iOS SDK 中的 LoginManager
登录,如下所示:
let loginManager = LoginManager()
loginManager.logIn([.publicProfile, .email], viewController: self) { (loginResult) in
登录对话框通过 Safari 打开 facebook.com,我有一个按钮可以
Log In with the Facebook App
当我在 Facebook 应用程序中单击 "Continue" 时,我返回到我的应用程序,但是即使 loginResult
returns .success
,登录对话框也没有关闭。
这是登录成功后返回我的应用后显示的内容:
我唯一的选择就是点击'Cancel'。登录对话框似乎是 SFAuthenticationViewController
,目前在 Google 搜索中包含 0 个结果。
似乎其他人在过去遇到的问题是,在他们的 AppDelegate
中,他们没有在 application:openURL:options:
中调用适当的授权流程处理,但已成功调用,如下所示:
@available(iOS 9.0, *)
func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
print("application open url\n\(url)\noptions \(options)")
if url.absoluteString.hasPrefix("fb") {
print("Finishing Facebook log in flow")
return SDKApplicationDelegate.shared.application(application, open: url, options: options)
} else {
print("Finishing Google sign in flow")
return GIDSignIn.sharedInstance().handle(url, sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: [:])
}
}
我唯一能想到的是一些不兼容问题,因为我在 iOS 11 Developer beta 上使用 Swift 4,而且 [=15= 没有在线结果] 这似乎正在被使用。
我不确定为什么对话框没有自动关闭。
更新:
我创建了一个全新的空白应用程序,只有一个按钮以及 FacebookCore
和 FacebookLogin
依赖项,但问题仍然存在。
遵循的步骤:
更新:
现在使用 SDK 0.3.0
:https://github.com/facebook/facebook-sdk-swift/releases
更新,Facebook官方回复:
Hi Gareth,
Thanks for flagging this! iOS 11 is still in beta, and we don't
currently support it.
Best regards, Günay
这是设备上的错误 运行 iOS 11. 在设备上工作正常 运行 iOS 10.
此处提交错误报告:https://github.com/facebook/facebook-sdk-swift/issues/172
我在 Swift 3 iOS 11
上也遇到同样的问题
很可能您在 AppDelegate 中忘记了以下功能:
func application(
_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
ApplicationDelegate.shared.application(
app,
open: url,
sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
annotation: options[UIApplication.OpenURLOptionsKey.annotation]
)
}
使用 Facebook iOS SDK 中的 LoginManager
登录,如下所示:
let loginManager = LoginManager()
loginManager.logIn([.publicProfile, .email], viewController: self) { (loginResult) in
登录对话框通过 Safari 打开 facebook.com,我有一个按钮可以
Log In with the Facebook App
当我在 Facebook 应用程序中单击 "Continue" 时,我返回到我的应用程序,但是即使 loginResult
returns .success
,登录对话框也没有关闭。
这是登录成功后返回我的应用后显示的内容:
我唯一的选择就是点击'Cancel'。登录对话框似乎是 SFAuthenticationViewController
,目前在 Google 搜索中包含 0 个结果。
似乎其他人在过去遇到的问题是,在他们的 AppDelegate
中,他们没有在 application:openURL:options:
中调用适当的授权流程处理,但已成功调用,如下所示:
@available(iOS 9.0, *)
func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
print("application open url\n\(url)\noptions \(options)")
if url.absoluteString.hasPrefix("fb") {
print("Finishing Facebook log in flow")
return SDKApplicationDelegate.shared.application(application, open: url, options: options)
} else {
print("Finishing Google sign in flow")
return GIDSignIn.sharedInstance().handle(url, sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: [:])
}
}
我唯一能想到的是一些不兼容问题,因为我在 iOS 11 Developer beta 上使用 Swift 4,而且 [=15= 没有在线结果] 这似乎正在被使用。
我不确定为什么对话框没有自动关闭。
更新:
我创建了一个全新的空白应用程序,只有一个按钮以及 FacebookCore
和 FacebookLogin
依赖项,但问题仍然存在。
遵循的步骤:
更新:
现在使用 SDK 0.3.0
:https://github.com/facebook/facebook-sdk-swift/releases
更新,Facebook官方回复:
Hi Gareth,
Thanks for flagging this! iOS 11 is still in beta, and we don't currently support it.
Best regards, Günay
这是设备上的错误 运行 iOS 11. 在设备上工作正常 运行 iOS 10.
此处提交错误报告:https://github.com/facebook/facebook-sdk-swift/issues/172
我在 Swift 3 iOS 11
上也遇到同样的问题很可能您在 AppDelegate 中忘记了以下功能:
func application(
_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
ApplicationDelegate.shared.application(
app,
open: url,
sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
annotation: options[UIApplication.OpenURLOptionsKey.annotation]
)
}