ios - facebook swift sdk 0.2.0 swift 3.1 登录页面保持打开状态

标签 ios swift facebook

我正在使用;

  • swift SDK 0.2.0 和
  • swift 3.1

所以,在我的 viewcontroller (initial.swift) 上我已经

import UIKit
import FacebookCore
import FacebookLogin
...
override func viewDidLoad() {
if let accessToken = AccessToken.current {
   print("User is already logged in")
   ...
}
else {
   let loginButton = LoginButton(readPermissions: [ .publicProfile, .email ])
   loginButton.center = view.center

   //AFTER ACTION
   let loginManager = LoginManager()
   loginManager.logIn([ .publicProfile, .email ], viewController: self)
        { loginResult in
            switch loginResult {
            case .failed(let error):
                print(error)
                break
            case .cancelled:
                print("User cancelled login.")
            case .success(let grantedPermissions, let declinedPermissions, let accessToken):
                print("Logged in!")
            }
        }
}    

登录按钮按预期显示,但在权限页面后,白页保持打开状态,当我手动单击“完成”时,应用程序认为用户取消了登录。
有类似的线程建议缺少应用程序 delegate 函数(34734885),但我猜这是 FBSDKCoreKitFBSDKLoginKit 的解决方案,而不是新的Facebook swift SDK。再一次,我猜。有什么建议吗?

编辑
我也试过这个;

let myLoginButton = UIButton()
myLoginButton.backgroundColor = UIColor.darkGray
myLoginButton.frame = CGRect(0, 0, 180, 40);
myLoginButton.center = view.center;
myLoginButton.setTitle("My Login Button", for: UIControlState.normal)
// Add the button to the view
view.addSubview(myLoginButton)
// Handle clicks on the button
myLoginButton.addTarget(self, action: #selector(self.FBloginButtonClicked), for: UIControlEvents.touchUpInside)


@objc func FBloginButtonClicked() {  
    //AFTER ACTION
    let loginManager = LoginManager()
    loginManager.logIn([ .publicProfile, .email ], viewController: self)
    { loginResult in
        switch loginResult {
        case .failed(let error):
            print(error)
            break
        case .cancelled:
            print("User cancelled login.")
        case .success(let grantedPermissions, let declinedPermissions, let accessToken):
            print("Logged in!")
        }
    }
}

最佳答案

据我了解,您根据 facebook guide? 做了所有事情

包括这部分:

// Handle clicks on the button
  myLoginButton.addTarget(self, action: @selector(self.loginButtonClicked) forControlEvents: .TouchUpInside) 

// Once the button is clicked, show the login dialog
@objc func loginButtonClicked() {
  let loginManager = LoginManager()
  ...
  }

关于ios - facebook swift sdk 0.2.0 swift 3.1 登录页面保持打开状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831728/

相关文章:

ios - 如何使用 AVFoundation 读取二进制二维码?

ios - 尝试访问子项目文件时从错误 xcode 引用 "_OBJC_CLASS_$_"

ios - 解析标记时 OHAttributedLabel 的格式问题

facebook - 验证 Facebook 应用程序 ID 和应用程序 key

android - Facebook 登录 sdk 在发布应用程序 android 中不起作用

Facebook Open Graph 每个操作多个对象

ios - 触摸在 UIScrollView 内的 UITableView 上不起作用

ios - SWRevealViewController开启方法

swift - Swift Playground 中的 CoreLocation

ios - 在 Swift 5 中为 Dictionary[String :Any] 创建扩展