iOS Facebook 登录按钮与 swift

Posted

技术标签:

【中文标题】iOS Facebook 登录按钮与 swift【英文标题】:iOS Facebook login button with swift 【发布时间】:2016-07-13 18:39:52 【问题描述】:

只是想知道我在下面的代码中做错了什么,块 facebookLogin.login(withReadPermissions:) 中的代码永远不会被调用。

  @IBAction func fbBtnPressed(sender: UIButton!) 
    let facebookLogin =  FBSDKLoginManager()

    facebookLogin.logIn(withReadPermissions: [ "email" ], from: self)  (facebookResult: FBSDKLoginManagerLoginResult?, facebookError:NSError?) in

        if facebookError != nil 
            print("Facebook login failed. Error \(facebookError)")
         else 
            let accessToken = FBSDKAccessToken.current().tokenString
            print("Successfully logged in with facebook. \(accessToken)")
        
    

【问题讨论】:

按钮的连接是否正确?按钮功能是否被调用? 是的,按钮函数被调用了。 【参考方案1】:

facebookLogin 可能在函数调用结束时超出范围,在它有时间完成之前被释放。

尝试将let facebookLogin = FBSDKLoginManager() 移动到包含(类)范围:

let facebookLogin =  FBSDKLoginManager()

@IBAction func fbBtnPressed(sender: UIButton!) 

    facebookLogin.logIn(withReadPermissions: [ "email" ], from: self)  (facebookResult: FBSDKLoginManagerLoginResult?, facebookError:NSError?) in

        // ...    
    

【讨论】:

【参考方案2】:

当您请求许可时,您确定令牌存在吗?如Facebook Login SDK 中所述,

在调用 loginManager 之前,您应该检查现有令牌的可用性。

否则,您需要使用self.facebookLogInButton.readPermissions = ["email"] 为您的登录按钮设置权限,如我链接的权限页面所述

【讨论】:

以上是关于iOS Facebook 登录按钮与 swift的主要内容,如果未能解决你的问题,请参考以下文章

带有 Facebook 单点登录的 iOS 应用程序中的“点赞”按钮

无法使用 api v2.4 在 ios 中使用自定义按钮登录 facebook

知道何时在 ios 中按下 facebook 登录按钮

Facebook SDK for iOS 处理登录

Facebook 登录按钮对齐 iOS

Facebook IOS SDK登录按钮强制小文本