gpt4 book ai didi

ios - 使用 safari View Controller 登录时的 Swift iOS Facebook SDK 循环

转载 作者:行者123 更新时间:2023-11-28 06:17:44 24 4
gpt4 key购买 nike

我正在尝试在用 swift 编写的 iOS 应用程序中添加 facebook 登录。

这里的问题是,当我在 SSFSafariViewController 中填写登录过程并单击“完成”时,它会重新打开 SSFSafariViewController 中的登录对话框并一直这样做。

这是我的代码:

// Loads user data if he is logged in, othewise asks him to login
static func login(ViewController controller: UIViewController) -> Bool {
// If user has logged in before: dont ask him to login again
// use previus login data
if(AccessToken.current != nil){
// Load user data
create();
return true;
}
// If user is'nt logged in: ask him to login
else {
var result: Bool = false;
let loginManager = LoginManager()
loginManager.logIn([ .publicProfile, .userFriends, .email], viewController: controller) { loginResult in
switch loginResult {
case .failed(let error):
print(error)
result = false;
case .cancelled:
result = false;
case .success( _, _, _):
result = true;
}
}

// If user has logged in: laod his data
if(result){
create();
}

return result;
}
}

最佳答案

我已经解决了我的问题,看起来是委托(delegate)的问题,Facebook SDK 提供的 SSFSafariViewController 没有回调!并且 SDK 从未获得 SSFSafariViewController 的结果,因此它试图通过重新呈现登录 View SSFSafariViewController 来解决问题,这导致了循环一遍又一遍.

所以解决方案是将这个函数添加到 AppDelegate 中:

@available(iOS 9.0, *)
func application(application: UIApplication,openURL url: NSURL, options: [String: AnyObject]) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, open: url as URL!, sourceApplication: UIApplicationOpenURLOptionsKey.sourceApplication.rawValue, annotation: UIApplicationOpenURLOptionsKey.annotation);
}

然后一切顺利!

关于ios - 使用 safari View Controller 登录时的 Swift iOS Facebook SDK 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44674698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com