在Facebook用Swiftlogin之后Segue不会触发
在此先感谢您的帮助!
我正在写一个快速的应用程序来实现Facebooklogin,并且在login完成后遇到了一些问题。
作为FBSDKLoginButtonDelegate的一部分,我有两个方法:
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {}
和
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {}
loginbutton是正确实现的,我可以读取权限/ FB令牌,并将其传递到Amazon Cognito。
但奇怪的是,我不能以编程方式从login中退出,进入不同的视图(控制器)。
推入FBloginbutton将用户带到networking浏览器(Facebook SDK处理所有这些),并进行login。
如果我放置一个segue,如:
dispatch_async(dispatch_get_main_queue(), { self.performSegueWithIdentifier("segueLoginViewtoHome", sender: nil })
到loginButton(),它从来没有真正执行(即,当Web浏览器消失,用户返回到视图与loginbutton,而不是由segue预期的新视图)。 我相信这行在浏览器窗口返回到保存loginbutton(和segue)的视图之前执行,但我不知道如何告诉程序“等待”视图成为唯一一个活动和可见再次执行segue。
我相信是这样的,因为如果我把相同的segue代码放到loginButtonDidLogOut()中,在那里不需要切换到浏览器,那么在退出的表单中推入“退出”屏幕的底部。
这个视图控制器被正确设置为委托,正如segue所显示的那样,如果编码在退出时发生,它将正常工作。
任何帮助将不胜感激,道歉的长问题,谢谢!
我通过创build一个名为fbLoginSuccess的全局布尔值来解决这个问题,初始化为false。 如果Facebooklogin成功,那么我将fbLoginSuccess设置为true,在那里你正在执行你的segue。 然后,我重写viewDidAppear()并在fbLoginSuccess为true的情况下执行segue。 这解决了它,因为viewDidAppear()从浏览器窗口返回后执行,这是你想要的。
var fbLoginSuccess = false override func viewDidAppear(animated: Bool) { if (FBSDKAccessToken.currentAccessToken() != nil && fbLoginSuccess == true) { performSegueWithIdentifier("loginSegue", sender: self) } } func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { print("User Logged In") if ((error) != nil) { // Process error print(error) } else if result.isCancelled { // Handle cancellations } else { fbLoginSuccess = true // If you ask for multiple permissions at once, you // should check if specific permissions missing if result.grantedPermissions.contains("email") { // Do work } } }
希望能帮助到你!
我没有足够的评论声望,但改变你的'或'比较'||' 当AND'&&'检查时,看看是否login是成功的,令牌不为零为我工作。 否则,无论是否由于某种原因login,我都会继续。 可能只是我的问题,但希望能帮助别人。
- Facebook Connect for iOS:dialogDidComplete反应差异化
- “fb://”urlscheme – 官方还是没有?
- iOS的Facebook的button不工作与iOS应用程序
- 原生Facebooklogin体验通过浏览器
- Facebook ShareDialog总是返回,完成时取消
- Facebook SDK 重复的符号
- 由hasPasswordField_引发的Facebook iFrame安全错误(document.domain)
- Facebook iOS Safari在使用单一login进行身份validation时,“无法打开页面错误”
- 新的Facebook iOS应用的自定义URLscheme