如果用户取消登录,Swift ios facebook登录会使应用程序崩溃
Posted
技术标签:
【中文标题】如果用户取消登录,Swift ios facebook登录会使应用程序崩溃【英文标题】:Swift ios facebook login crashes app if user cancel login 【发布时间】:2016-04-03 20:47:44 【问题描述】:我正在使用以下代码登录 facebook:
@IBAction func fbLoginBtnDidTouch(sender: AnyObject)
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self) (result, error) -> Void in
if (error == nil)
let fbloginresult : FBSDKLoginManagerLoginResult = result
if(fbloginresult.grantedPermissions.contains("email"))
self.getFBUserData()
AppDelegate:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
这将在 web 视图中启动 FB。如果用户从 FB 帐户接受应用程序,它将按预期返回应用程序。
但是,如果用户点击 NO 或点击带有 FB 的 webview 中的 完成 按钮,应用程序将崩溃并说 (fatal error: unexpectedly found nil while展开可选值)
标记这一行:
if(fbloginresult.grantedPermissions.contains("email"))
那么,如果用户点击 No 或 Done,为什么应用会崩溃?
【问题讨论】:
【参考方案1】:首先检查用户是否取消登录。应用程序崩溃,因为没有授予权限。 FBSDKLoginManagerLoginResult
if (error == nil)
let fbloginresult : FBSDKLoginManagerLoginResult = result
if result.isCancelled
return
if(fbloginresult.grantedPermissions.contains("email"))
self.getFBUserData()
【讨论】:
是的,当我取消登录时,应用程序会崩溃,无论是单击否还是完成按钮以上是关于如果用户取消登录,Swift ios facebook登录会使应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 立即解析 Facebook 登录默认为用户取消登录
在用户已登录 Facebook 的设备上登录时如何跳过 Facebook 的权限页面
我在 ios 应用程序中实现了谷歌登录。现在,我如何验证用户是不是已登录,如果没有 - 使用 Swift 将他返回到登录页面?