我正在使用;
-
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!")
}
}
}
登录按钮按预期显示,但在权限页面后,白页保持打开状态,当我单击"done"手动应用程序认为用户取消登录时 .
有类似的线程暗示缺少app delegate
函数(34734885),但我想这是 FBSDKCoreKit
和 FBSDKLoginKit
的解决方案,而不是新的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!")
}
}
}
2 回答
据我所知你做了相应的事情facebook guide?
包括这部分:
和
根据你的问题,你似乎在appdelegate中写了一个方法 . 成功登录后,这将返回到您的应用程序 .
SWIFT 4:
希望这件事能对你有所帮助 .